检查MySQL中的约束

时间:2012-10-24 16:41:52

标签: mysql triggers

  

可能重复:
  Throw an error in a MySQL trigger

我有一个使用CHECK的表定义,但由于MySQL不支持此功能,我需要做一些不同的事情。我们的想法是在此表上INSERTUPDATE之前使用触发器,但我不知道该怎么做。

这是表格:

CREATE TABLE IF NOT EXISTS `smeii_media` (
    `id` INTEGER AUTO_INCREMENT,
    `type` VARCHAR(5) NOT NULL,
    `title` VARCHAR(100) NOT NULL,
    `description` VARCHAR(500),
    `path` VARCHAR(100) NOT NULL,
    UNIQUE(`path`),
    PRIMARY KEY(`id`),
    CONSTRAINT chk_media CHECK (`type`='audio' OR `type`='image' OR `type`='video')
) ENGINE=InnoDB;

这里是触发器:

DELIMITER $$

CREATE TRIGGER smeii_media_briu BEFORE INSERT OR UPDATE FOR EACH ROW
BEGIN
    IF NEW.type != 'audio' AND NEW.type != 'image' AND NEW.type != 'video'
    THEN

    END IF;
END;

DELIMITER $$

我可以在if-block中添加什么来抛出错误?

1 个答案:

答案 0 :(得分:1)

而不是在触发器中抛出错误(实际上不支持),如果你创建了这个子句:

BEGIN
IF NEW.type = 'audio' OR NEW.type = 'image' OR NEW.type = 'video'
THEN

END IF;

忽略其他一切。