我真的是mysql的初学者。在oracle中,我们可以使用触发器,它可以检测插入元素,并允许在出现错误时完全中断插入命令。我发现mysql也支持触发器,但是如果它们不满足规则,我们如何使用它们来检测插入参数并阻止它们被插入。
e.g. INSERT INTO accounts (userId, balance) VALUES ('12','450'); // Valid
INSERT INTO accounts (userId, balance) VALUES ('12','-574'); // Invalid
if(balance<0){
Do not insert;
}
else{
Insert;
}
注意:我正在处理并发事务,因此 STRICTLY需要触发器,即最低级错误检测,以便没有人可以破解。 任何帮助将不胜感激。谢谢,
答案 0 :(得分:2)
或使用BEFORE INSERT触发器
DELIMITER $$
CREATE TRIGGER au_a_each BEFORE INSERT ON accounts FOR EACH ROW
BEGIN
IF new.balance > 0 THEN
BEGIN
INSERT INTO b (id,balance) VALUES (new.id, new.balance);
END
END $$
DELIMITER ;
mysql文档中的更多信息:http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
PS:编程课程编号1(一个有大写“o”) - 与编程/脚本语言的文档交朋友
答案 1 :(得分:1)
您可以使用INSERT IGNORE并在mysql中设置ALTER TABLE字段约束