0

可能重复:
在 MySQL 触发器中引发错误

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

这是表格:

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 块中放入什么来引发错误?

4

1 回答 1

1

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

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

END IF;

并忽略其他一切。

于 2012-10-24T16:51:32.420 回答