是否可以防止删除PostgreSQL端表中的第一行?
我有一个类别表,我想防止删除默认类别,因为它可能会破坏应用程序。当然,我可以轻松地在应用程序代码中执行此操作,但是在数据库中执行此操作会更好。
我认为这与delete语句的规则有关,但是我找不到文档中与我的问题遥遥相望的任何东西。
我看到的最好的方法是在此表上创建一个删除触发器。基本上,您必须编写一个存储过程来确保该“默认”类别将始终存在,然后使用此表上的Trigger ON DELETE事件来强制实施该类别。做到这一点的一个好方法是创建一个每行触发器,该触发器将确保在DELETE事件中永远不会删除“默认”类别行。
请查看有关触发器和存储过程的PostgreSQL文档:
http://www.postgresql.org/docs/8.3/interactive/trigger- definition.html
http://www.postgresql.org/docs/8.3/interactive/plpgsql.html
此Wiki中还有一些有价值的示例:
http://wiki.postgresql.org/wiki/A_Brief_Real- world_Trigger_Example