2010-12-17 103 views
0

我创建一个表我得到错误创建触发器

create table employe(Eid int,Ename varchar(20),City varchar(20),Designation varchar(20), Salary int,perks int)

我想为它创建一个触发器,但我得到的错误

create trigger ins_trig before insert on employe 
for each row 
begin 
update employe set salary=salary-300 where parks>2000; 
end; 

的错误是:

Msg 102, Level 15, State 1, Procedure ins_trig, Line 1 
Incorrect syntax near 'before'. 

我做错了什么?

+1

SQL Server不知道任何“BEFORE INSERT”触发器 - 只AFTER(操作)或代替(操作)触发...... – 2010-12-17 06:54:48

+0

“BERFORE”和“FOR EACH ROW”在你的触发语法列入意味着您没有使用SQL Server(Oracle?Informix?),但是错误消息看起来像是SQL Server错误。请说明您使用的服务器。 – Tony 2010-12-17 08:23:02

回答

1

尝试

create trigger ins_trig on employe before insert 

看一看CREATE TRIGGER (Transact-SQL)

+0

+1。打我吧! – 2010-12-17 06:45:34

+1

您的触发器语句无效T-SQL; SQL Server中没有“插入前”。 – Tony 2010-12-17 08:25:06

0

假设你正在使用SQL Server,你可能希望这样的:

create trigger ins_trig ON employe FOR insert 
begin 
update employe set salary=salary-300 where parks>2000 
end; 
1

您的代码不是SQL Server代码desp迭代一个SQL Server错误消息。

不知道这是否是因为没有 “每一行”,在T-SQL或者

喜欢的东西:

create trigger ins_trig on employe INSTEAD OF insert 
AS 
begin 
update employe set salary=salary-300 where parks>2000; 
end; 

看你的代码:

  • 你听说过万圣节问题吗?
  • 是公园还是特权?
  • 主键?