MySQLデータベースに「ルール」/インデックスを設定する方法はありますか?したがって、キャンセルと要求の2つの列がある場合、そのうちの1つだけが値で埋められる可能性があります。
したがって、キャンセルを1に設定した場合、クレームは1にすることはできず、逆の場合も同じようになりますか?
MySQLデータベースに「ルール」/インデックスを設定する方法はありますか?したがって、キャンセルと要求の2つの列がある場合、そのうちの1つだけが値で埋められる可能性があります。
したがって、キャンセルを1に設定した場合、クレームは1にすることはできず、逆の場合も同じようになりますか?
ここで推奨される解決策は、ステータスがまたはのいずれかである1つの列を持つようにスキーマを変更することです。ただし、これらがNULL以外のブール列であり、可能な状態が2つしかない場合です。cancelled
claimed
トリガーを使用して必要なことを実行できますがBEFORE UPDATE
、それは、すでに過度に複雑なスキーマにさらに複雑さを重ねているように見えます。
UPDATE
次のようなものですが、トリガーを頻繁に実行しないため、構文にはおそらく作業が必要です。
CREATE TRIGGER `trg_status` BEFORE UPDATE ON your_table
FOR EACH ROW
BEGIN
/* If the claimed was set to 1, set cancelled to 0 */
IF OLD.cancelled = 1 AND NEW.claimed = 1 THEN
SET NEW.cancelled = 0;
/* Or the opposite.... */
ELSEIF OLD.claimed = 1 AND NEW.cancelled = 1 THEN
SET NEW.claimed = 0;
END IF
END