我有一个带有属性服务员的表,偶数。我希望触发器代码检查特定事件是否已经插入三次,如果是,则每次在具有相同eventid值的表中插入新插入时抛出异常。
我使用以下代码:
CREATE TRIGGER 'timeslotattendantcheck'
BEFORE INSERT ON 'attendants'
FOR EACH ROW
DECLARE @v_dup int;
BEGIN
SELECT @v_dup=COUNT(*) from attendants where attendant=:NEW.attendant;
if v_dup > 3 then
Raise_Application_Error (-20100, 'Too many attendants for one time slot. The insert is cancelled.');
end if;
end;
答案 0 :(得分:0)
当你定义一个触发器(或一个过程)时,你需要更改默认的查询分隔符,然后你必须将它恢复到;
(那些引号......它们必须是反向标记`)
另外,不要使用用户变量(@
变量);使用局部变量(除非您需要使用过程外的值)。并在<{1}}块中声明变量 。
更正的代码:
begin...end
有用的链接: