我有一个名为航班的MySQL表,其中包含名为 origin 和 destination 的字段,这些字段是从机场表中引用的机场代码,我将其定义为CHAR(3 )。我希望能够插入记录,原因显而易见,原点和出发列中的值不能相同。 如何使用INSERT INTO TABLE SQL语句完成此操作?
答案 0 :(得分:0)
在MySQL中唯一能做到这一点的方法是使用触发器。
其他数据库支持check
约束,您可以在其中说check (origin <> destination)
。 MySQL接受这种语法,但遗憾的是没有强制执行约束。
您也可以在应用层执行此操作。
答案 1 :(得分:0)
创建一个触发器:
CREATE TRIGGER `travels_before_insert` BEFORE INSERT ON `travels` FOR EACH ROW BEGIN
DECLARE msg VARCHAR(255);
IF NEW.source=NEW.destination THEN
set msg = "Error: You can't have same source and destination";
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg;
END IF;
END;
如果源和目标相同,它的作用是防止插入发生。