我想保护某些行以免被删除,我更喜欢使用触发器而不是应用程序的逻辑来做到这一点。我正在使用MySQL数据库。
我想到的是:
DELIMITER $$
DROP TRIGGER `preserve_permissions`$$
USE `systemzarzadzaniareporterami`$$
CREATE TRIGGER `preserve_permissions`
AFTER DELETE ON `permissions`
FOR EACH ROW
BEGIN
IF old.`userLevel` = 0 AND old.`permissionCode` = 164 THEN
INSERT INTO `permissions` SET `userLevel`=0, `permissionCode`=164;
END IF;
END$$
DELIMITER ;
但是当我使用delete时给了我一个错误:
DELETE FROM `systemzarzadzaniareporterami`.`permissions`
WHERE `userLevel` = 0 AND `permissionCode` = 164;
Error Code: 1442. Can't update table 'permissions' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
还有另一种方法可以做这样的事情吗?
一种解决方案是创建一个具有权限表外键的子表,并添加引用行以引用要阻止其删除的各个行。
CREATE TABLE preserve_permissions (
permission_id INT PRIMARY KEY,
FOREIGN KEY (permission_id) REFERENCES permissions (permission_id)
);
INSERT INTO perserve_permissions (permission_id) VALUES (1234);
现在,您无法从ID为1234的权限中删除该行,因为它会违反外键依赖性。
如果您确实想使用触发器来执行此操作,而不必在有人尝试删除它时重新插入一行,则只需中止删除操作即可。MySQL
5.5具有SIGNAL
在存储的proc或触发器中引发SQLEXCEPTION
的功能。
如果使用MySQL
5.0或5.1,则不能使用SIGNAL,但是可以使用一种技巧,该技巧是在触发器中声明一个本地INT变量,然后尝试为其分配一个字符串值。这是一种数据类型冲突,因此会引发错误并中止生成触发器的操作。另一个聪明的窍门是在您尝试填充到INT的字符串中指定适当的错误消息,因为该字符串将在错误中报告!:-)
为了防止我们的网络在预连接攻击和获取访问部分中解释的先前攻击破解方法,我们需要访问路由器的设置页面。每个路由器都有一个web页面,我们可以在页面中修改路由器的设置,它通常位于路由器的IP上。首先,获得我们自己的计算机的IP,为此运行命令。如下面的屏幕截图所示,突出显示的部分是计算机的IP: 现在打开浏览器并访问:。对于此示例,计算机的IP为。通常,路由器的IP是子网的第一个IP。目前,它是,我们只
问题内容: 我正在研究使用SQL LocalDB作为客户端数据库,它将替代.net 4中开发的内部应用程序中的当前SQL CE 3.5数据库。 我遇到了一个不确定的问题,那就是LocalDB实例的安全设置。 如果我在.net中设置了一个脚本来创建一个私有LocalDB实例,例如(localdb)\ T1,然后在该实例中创建了一个新数据库,并添加了一个SQL用户帐户+密码(非域帐户),如何停止本地使
要使用注释,必须创建一个包含getters和setters的类: 但这会导致有人试图通过调用以下命令来修改此值: 有没有一种方法可以创建注释类,而不使用setter和外部解析器/读取器类?
在< code>/users下,我有一些需要身份验证令牌的路由,还有一些不需要。为了实现这一点,我做了以下工作。 然后我按照以下方式安装这些路线。 当我向< code>/users发送POST时,它运行预期的路径,但是当< code>next()被调用时,< code > protected _ middleware 运行。这是因为它在标有“D”的行中找到了下一个< code>/users定义。
6xx受保护 600 Series,Repliesregardingconfidentialityandintegrity 631 Integrityprotectedreply. 632 Confidentialityandintegrityprotectedreply. 633 Confidentialityprotectedreply.
问题内容: 如何在受保护的python类中定义一个方法,只有子类才能看到它? 这是我的代码: 我只希望看到的方法的子类。 问题答案: Python不像C ++ / Java / C#支持访问保护。一切都是公开的。座右铭是:“我们都是成年人。” 记录下您的课程,并坚持要求您的合作者阅读并遵守文档。 Python的文化是,以下划线开头的名称意味着:“除非您真正知道应该使用这些名称,否则请不要使用它们。