この問題で私を助けてくれますか? 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しかし、どういうわけかうまくいきません...エラーを受け取ることなく、必要なものをテーブルに挿入できます。私のコードの何が問題なのか知っていますか?