Use a trigger to stop an insert or update

后端 未结 2 918
逝去的感伤
逝去的感伤 2020-11-27 07:13

Since MySQL ignores check constraints, how does one go about using a trigger to stop an insert or update from happening?

For example:

Table foo has an attrib

相关标签:
2条回答
  • 2020-11-27 07:30

    If your version of MySQL is older than 5.5, try setting a non-null field of the table to NULL. It is a hack, but it does prevent the update or insert from completing.

    The SIGNAL command which Naveen suggests looks great, and I'm looking forward to using it after we upgrade.

    0 讨论(0)
  • 2020-11-27 07:44

    Try the SIGNAL syntax - https://dev.mysql.com/doc/refman/5.5/en/signal.html

    create trigger agency_check
    before insert on foo
    for each row
    begin
      if (new.agency < 1 or new.agency >5) then
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'your error message';
      end if 
    end
    

    EDIT

    Updated based on popular comment below by Bill Karwin.

    0 讨论(0)
提交回复
热议问题