可能重复:
How to prevent deletion of the first row in table (PostgreSQL)?
我有一个表用户,我的第一行是admin,如下所示
guid | username | password | firstname | lastname | location | emailaddress | userrole
-----------------------------------+----------+----------------------------------+-------------------+-----------+----------+---------------+---------------
2644885344cecd6f2973b35.63257615 | admin | 21232f297a57a5a743894a0e4a801fc3 | System | Generated | | | administrator
11980380874dc3b542363526.78672935 | gds | a5f9a8e4d375eb82ca70f7ab7b08ec7c | gag | gsdg | dsf | fdsf@fdsd.jgh | administrator
(2 rows)
任何人都可以将我的第一行管理员的查询提取给永远删除...意味着这个
如果用户进入删除,则无法删除,然后警报生成“不删除
”管理员“
如果用户想要删除第2,第3,第4或任何其他行,那么它是可行的......我正在使用php
答案 0 :(得分:1)
为什么不使用以下简单的mysql查询...
DELETE FROM users_tbl WHERE id = 2 AND username != 'admin';
永远不会删除管理行。
答案 1 :(得分:1)
在表上定义trigger,绑定到调用存储过程的before delete事件,在该事件中,根据存储在管理员数据库中的ID,检查要删除的ID。如果匹配,则raise an exception停止postgresql执行实际删除。