小编gal*_*tor的帖子

防止用户在 MySQL 中删除超过一定数量的行

问题:

  • 我有一个带行的表,没什么特别的
  • 当数据库用户删除一行时,它应该增加一个数字
  • 数据库用户最多只能删除表中的 3 行
  • 数据库管理员应该能够向数据库用户添加更多“删除令牌”

我知道我应该有一个BEFORE DELETE触发器来查看用户是否可以删除一行,以及一个AFTER DELETE触发器来增加用户删除的行数。

我应该如何存储有关数据库用户从该特定表中删除了多少行的信息,以及如何允许数据库管理员向用户添加更多“删除令牌”。

我想创建一个表来存储它,但我想知道没有表是否有不同的方法来做到这一点?这可能听起来像一个奇怪的问题,但我只是想弄清楚更高级的东西是如何工作的。

mysql trigger

5
推荐指数
1
解决办法
833
查看次数

在触发器中声明和使用变量

我今天一直在用触发器测试一些东西,但我坚持不懈,我不知道是什么导致了我的问题。

\n\n
DELIMITER $$\n\nUSE `pucko`$$\n\nCREATE TRIGGER `after_delete_Alien`\nAFTER DELETE ON `Alien` FOR EACH ROW BEGIN       \n    DECLARE vapenid INT;\n    DECLARE alien_count INT;\n    DECLARE rymdskepp_count INT;\n\n    SET vapenid = (SELECT vapen FROM `Alien_Anv\xc3\xa4nder_Vapen` WHERE idAlien = OLD.idAlien);\n\n    SIGNAL SQLSTATE \'45000\' SET MESSAGE_TEXT = vapenid; // Debug, this shows that vapenid is null?\n\n    DELETE FROM `Alien_Anv\xc3\xa4nder_Vapen` WHERE idAlien = OLD.idAlien;\n\n    SET alien_count = (SELECT count(*) FROM `Alien_Anv\xc3\xa4nder_Vapen` WHERE vapen = vapenid);\n    SET rymdskepp_count = (SELECT count(*) FROM `Rymdskepp_Anv\xc3\xa4nder_Vapen` WHERE vapen = vapenid);\n\n\n    if(alien_count …
Run Code Online (Sandbox Code Playgroud)

mysql trigger

5
推荐指数
1
解决办法
5万
查看次数

标签 统计

mysql ×2

trigger ×2