0

我真的是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;
}

注意:我正在处理并发事务,所以严格需要触发器,即最低级别的错误检测,这样没有人可以破解。任何帮助将不胜感激。谢谢,

4

2 回答 2

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”) - 与任何编程/脚本语言的文档成为朋友

于 2012-10-16T18:15:36.780 回答
1

您可以使用 INSERT IGNORE 并在 mysql 中设置 ALTER TABLE 字段约束

于 2012-10-16T18:08:34.373 回答