举个例子,假设我有一张桌子.
人(身份,现年)
人员团队(id,team,team)
一个人每年在公司工作时都会被指派一个团队。“个人团队”保存团队的记录。只有当“person”中的“currentyear”字段等于“personteam”中的“工作年”时,才允许插入到“personteam”中。
我想根据用户亲自存储的内容,在用户插入PERSON_TEAM时进行一些检查。所以我用select语句写了一个触发器。我不能百分之百肯定MySQL触发器的语法,所以希望这是有意义的.
在personteam插入之前创建触发器mytest触发器 每一行 从person p中选择currentyear @variablename,其中p.id = NEW.id如果@variablename != NEW.workyear错误 结束
有人能为这样的操作提供一个修改过的、经过修正的语法吗?
谢谢。
(这个例子很琐碎,所以我可以学习,所以请原谅它听起来是多么的毫无意义)
发布于 2009-10-29 13:44:43
根据MySQL标准,正确的处理方法是使用SIGNAL命令将错误抛回给客户端。由于这是一个前置触发器,触发器中的一个错误将阻止mysql继续并插入行。
然而,mysql还不支持信号,所以我们必须想出一种方法来造成任意的错误。
一种方法是调用一个不存在的过程,如图所示。
更好的方法是从此表中删除插入权限,而使用存储过程为您处理插入。
https://stackoverflow.com/questions/1640217
复制相似问题