我有一个使用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-block中添加什么来抛出错误?
答案 0 :(得分:1)
而不是在触发器中抛出错误(实际上不支持),如果你创建了这个子句:
BEGIN
IF NEW.type = 'audio' OR NEW.type = 'image' OR NEW.type = 'video'
THEN
END IF;
忽略其他一切。