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 に答える