一尘不染

如何防止删除表中的第一行(PostgreSQL)?

sql

是否可以防止删除PostgreSQL端表中的第一行?

我有一个类别表,我想防止删除默认类别,因为它可能会破坏应用程序。当然,我可以轻松地在应用程序代码中执行此操作,但是在数据库中执行此操作会更好。

我认为这与delete语句的规则有关,但是我找不到文档中与我的问题遥遥相望的任何东西。


阅读 120

收藏
2021-03-10

共1个答案

一尘不染

我看到的最好的方法是在此表上创建一个删除触发器。基本上,您必须编写一个存储过程来确保该“默认”类别将始终存在,然后使用此表上的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

2021-03-10