I don't think this is possible on any Linux file system. But I wish to have a feature of setting a file to be undeletable but keeping the file updatable. Note the latter requirement cannot be met with the immutable bit of chattr.
This is potentially very useful as most of us have done accidental delete at least once in our career. Keeping the file updatable is important so that applications can continue to modify data in the file.
What I have in mind is datafiles of various databases. They are fixed in size for some time or all the time depending on the database setting. They are modified in-place. I imagine it's an easy feature to add to chattr since other file attributes are already in there, although not always implemented in common file systems.
DBAs are absolutely held responsible to have good backups of the databases. But that's a different topic. Besides, datafiles could be accidentally deleted by system admins.
Your problem with be with the fact that many applications don't modify files in-place. Instead any changes will be done via a temporary copy and renaming of files.
You would be better off with just good backups, and perhaps a filesystem that supports snapshots (zfs/btrfs/VSS on NTFS/etc). That way a deleted file isn't really gone, or at least not immediately gone since it can be recovered from a backup/snapshot.
As for permissions, for the most part, deleting and creating files is usually a permission that needs to be set on the directory that the file resides in, and not the specific file. A creation is adding a new file to the directory index, and a deletion is removing a file from the directory index. It might be possible to drop write permissions from the directory, but still leave write permissions on the file, depending on filesystem. Though as I mentioned, this probably won't work for lots of software.