この問題で私を助けてくれますか? MySQL
データベースに 2 つのテーブルがあります。
ServiceProvider(SPID, Name, ... etc.)
hasTag(SPID, TagID)
各サービス プロバイダーには、少なくとも 1 つのタグ、最大 5 つのタグが必要です。max-constraint は問題ありませんが、min-constraint は適切に機能しません。MySQL
最初にアサーションを介してこれを実装しようとしましたが、アサーションをサポートしていないことがわかりました。したがって、次のトリガーを作成しました。
delimiter |
CREATE TRIGGER MinTags BEFORE INSERT
ON ServiceProvider
FOR EACH ROW BEGIN
IF EXISTS (SELECT SPID FROM ServiceProvider
WHERE NOT EXISTS (SELECT DISTINCT SPID FROM hasTag))
THEN INSERT INTO stop_action VALUES(1, 'Assert Failure');
END IF;
END;
|
delimiter ;
'Assert Failure'
テーブルへの挿入はstop_action
、制約違反を作成するためだけであるため、DB はアクションを中止します。
さて、通常、ServiceProvider
テーブルに何も挿入せずにテーブルに値を挿入するhasTag
と、エラーが発生するはずですよね? ServiceProvider
しかし、どういうわけかうまくいきません...エラーを受け取ることなく、必要なものをテーブルに挿入できます。私のコードの何が問題なのか知っていますか?