2012-03-21 10 views
0

問題がある更新していない私はそれが唯一の関連op_idのステータスを更新する必要がありたいp_operatorsからOPIDの一つが、その後 n_notify表ステータス1であるときは、すべてのステータス行が1 をudating起こる...MySQLの関係に関連する行が正しく

`p_operators` (
    `opID` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `status` tinyint(4) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`opID`), 
    KEY `status` (`status`) 
) ENGINE=InnoDB; 

`n_notify` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `op_id` int(10) unsigned NOT NULL, 
    `email` varchar(155) NOT NULL, 
    `status` tinyint(4) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`id`), 
    KEY `status` (`status`), 
    KEY `op_id` (`op_id`) 
) ENGINE=InnoDB ; 

ALTER TABLE `n_notify` 
    ADD CONSTRAINT `n_notify_ibfk_2` FOREIGN KEY (`op_id`) REFERENCES `p_operators` (`opID`) ON DELETE CASCADE ON UPDATE CASCADE, 
    ADD CONSTRAINT `n_notify_ibfk_1` FOREIGN KEY (`status`) REFERENCES `p_operators` (`status`) ON DELETE CASCADE ON UPDATE CASCADE; 


p_operators values 
opID status 
5 0 
13 1 

n_notify values 
id op_id email status 
2 13 XX 1 
3 5 XX 1 

答えて

1

あなたの第二の制約はp_operatorsで、ステータスを変更してn_notifystatusすべて等しい値を変更することを、意味している勿論、n_notifystatusp_operatorsstatusをリンクします。

それ自体のステータスをカスケードにするのではなく、idによって行のステータスをカスケードしたいので、制約は必要ありませんが、トリガーです。親指の

ルール:

  • あなたが唯一のフィールドが必要な場合は、2つ以上のフィールドが必要な場合は、制約
  • を使用する(idが識別するために、ステータスが変更する)トリガー
を使用
+0

ユージン協力に感謝します。多くのop_idがあります。あなたが例を挙げることができれば、それを感謝します。 – memo

関連する問題