查询我的第一行管理员从不删除

时间:2011-05-06 08:41:40

标签: php javascript sql postgresql

  

可能重复:
  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

2 个答案:

答案 0 :(得分:1)

为什么不使用以下简单的mysql查询...

DELETE FROM users_tbl WHERE id = 2 AND username != 'admin';

永远不会删除管理行。

答案 1 :(得分:1)

在表上定义trigger,绑定到调用存储过程的before delete事件,在该事件中,根据存储在管理员数据库中的ID,检查要删除的ID。如果匹配,则raise an exception停止postgresql执行实际删除。