你能帮我解决这个问题吗?我在数据库中有两个表MySQL
:
ServiceProvider(SPID, Name, ... etc.)
hasTag(SPID, TagID)
每个服务提供者应该至少有一个标签,最多有五个标签。最大约束不是问题,但最小约束拒绝正常工作。我首先尝试通过断言来实现这一点,但后来我发现,它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
只是为了创建一个约束冲突,以便数据库将中止该操作。
现在,通常,当我在表中插入任何值ServiceProvider
,而不向表中插入任何内容时hasTag
,我应该会得到一个错误,对吧?但是,不知何故它不起作用......我可以将任何我想要的东西插入ServiceProvider
表中,而不会收到任何错误。你知道,我的代码有什么问题吗?