2016-12-16 9 views
0

2列にデータチェックを強制的に:MySQLの制約は、私はMySQLでの2列を持つこののInnoDBテーブルを持っている

CREATE TABLE mytable (
    `id_1` mediumint(8) unsigned NOT NULL, 
    `id_2` mediumint(8) unsigned NOT NULL 
) ENGINE=InnoDB; 

そして私は、INSERT操作のチェックを強制したい:ID_1は以下である必要がありID_2 だから私は、これで試しましたがうまくいかなかった:

ALTER TABLE mytable ADD CONSTRAINT mycheck CHECK (id_1 < id_2) 

これも可能ですか?私は何を間違えたの? ありがとう!

答えて

1

残念ながら、MySQLはCHECK CONSTRAINTをサポートしていないため、ALTERステートメントは使用できません。 MySQLのドキュメントでは、それは解析されますが、CHECK節は無視されます。 BEFORE INSERT TRIGGERを使っても同様の効果を得ることができます。以下のようなもの

delimiter // 
CREATE TRIGGER trig_check BEFORE INSERT ON mytable 
FOR EACH ROW 
BEGIN 
IF NEW.id_1 > NEW.id_2 THEN 
//Throw Error Probably 
END IF; 
END 
// 
delimiter ; 
+0

ありがとうございました! –

関連する問題