1

テーブルを作成するときに、2つの列の計算値に基づいて制約を宣言することはできますか?

これが私がやろうとしていることを説明する疑似コードです:

CREATE TABLE employee_comments(
  id int(11),
  user_id int(11),
  franchise_branch_id int(11) default 0,
  corporate_branch_id int(11) default 0,
  primary key id,
  key corp_xor_franch(corporate_branch_id + franchise_branch_id > 0)
)

基本的に、ユーザーは企業レベルまたはフランチャイズレベルのいずれかでコメントを挿入しています。コメントごとに、どちらかを空白のままにすることができますが、少なくとも1つは宣言する必要があります。

4

1 に答える 1

2

最善の策は、TRIGGERを使用することです-mysqlのドキュメントはこちらhttp://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

MySqlトリガーでINSERT操作を中止する方法からの情報を使用しますか?この例のようなものが役立つはずです

CREATE TRIGGER checkFieldsValid 
BEFORE INSERT ON employee_comments
FOR EACH ROW BEGIN

    DECLARE errmsg VARCHAR(255) DEFAULT "REQUIRED DATA NOT FOUND";

    IF NOT NEW.franchise_branch_id = 0 XOR NEW.corporate_branch_id = 0 THEN

        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = errmsg;

    END IF;
END;
于 2013-03-26T13:18:57.003 に答える