How to prevent node delete for a specific node?
I don't think there's a catch all solution.



On second though, you maybe can create a new content type, say node2, and set the permissions for that content type to admin only.

and if you will ever need more than one admin-only node, you'll have no problems at all.

however i have no experience whatsoever there :p



in hook_menu_alter change the 'access callback' for the "node/%nid/delete", since you need it only for a particular node ( say nid=120)

$items['node/120/delete'] = $items['node/%nid/delete'];
$items['node/120/delete']['access callback'] = 'custom_function';
unset($items['node/120/delete']['access arguments']);


this will prevent that node to be deleted directly.

then you need to remove the delete button from that node form edit (however i don't know the form name).

this should be enough and prevent the deletion "nicely", but you can use hook_delete like pointed out in the other answer to catch everything and everything else that can't be prevented like that.