如何显示Mysql查询中的重复错误?

juzqafwq  于 2023-01-20  发布在  Mysql
关注(0)|答案(1)|浏览(116)
`INSERT INTO MYTABLE(FLIGHTNUMBER, ORIGIN, DESTINATION) VALUES (109, "SIN", "KUL")`

如果FLIGHTNUMBER= 109且ORIGIN = SIN已出现在MYTABLE中,则抛出错误。
如何编写只检查两列值而不是所有列值的查询?

up9lanfz

up9lanfz1#

正如我在评论中提到的,(FLIGHTNUMBER,ORIGIN)上的唯一键就足够了。

alter table MYTABLE add unique key flight_orig(FLIGHTNUMBER,ORIGIN);

如果尝试为每个FLIGHTNUMBER、ORIGIN插入相同的值,则会抛出错误
关键字'MYTABLE.flight_orig'的条目'109-SIN'重复
Example
另一个选项是使用插入前触发器。

CREATE TRIGGER mytable_exists BEFORE INSERT ON MYTABLE
    FOR EACH ROW
    BEGIN
        IF EXISTS (SELECT 1 from MYTABLE where NEW.FLIGHTNUMBER=FLIGHTNUMBER and NEW.ORIGIN=ORIGIN)
          THEN 
             SIGNAL SQLSTATE '45000'
              SET MESSAGE_TEXT = 'Values exists on table';

        END IF;
    END;

在这种情况下,误差将是,
表中存在值
Example

相关问题