确保MySQL中的字符串不等式

时间:2016-11-21 01:27:44

标签: mysql

我有一个名为航班的MySQL表,其中包含名为 origin destination 的字段,这些字段是从机场表中引用的机场代码,我将其定义为CHAR(3 )。我希望能够插入记录,原因显而易见,原点和出发列中的值不能相同。 如何使用INSERT INTO TABLE SQL语句完成此操作?

2 个答案:

答案 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;

如果源和目标相同,它的作用是防止插入发生。