2010-12-17 3 views
0

ich eine Tabellei Fehler erhalten bei der Schaffung von Trigger

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

i denn es einen Trigger erstellen wollen, aber ich habe Fehler

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

Der Fehler ist:

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

Was mache ich falsch?

+1

SQL Server weiß nicht "BEFORE INSERT" auslöst - nur AFTER (Betrieb) oder STATT (Betrieb) löst ... –

+0

Die Aufnahme von 'berfore' und 'FOR EACH ROW' in Ihrer Trigger-Syntax bedeutet, dass Sie nicht SQL Server (Oracle? Informix?) verwenden, die Fehlermeldung jedoch wie ein SQL Server-Fehler aussieht. Bitte klären Sie, welchen Server Sie verwenden. – Tony

Antwort

1

Versuchen

create trigger ins_trig on employe before insert 

Werfen Sie einen Blick auf CREATE TRIGGER (Transact-SQL)

+0

+1. schlag mich dazu! –

+1

Ihre Triggeranweisung ist nicht gültig T-SQL; Es gibt kein "vor dem Einfügen" in SQL Server. – Tony

0

Vorausgesetzt, dass Sie SQL Server verwenden, sollten Sie dieses:

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

Ihr Code ist nicht SQL Server Code desp ite eine SQL Server-Fehlermeldung.

Sie wissen nicht, ob das funktioniert, weil es keine "für jede Zeile" in T-SQL entweder

So etwas ist:

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

auf den Code der Suche:

  • Hast du von dem Halloween-Problem gehört?
  • ist es Parks oder Vergünstigungen?
  • Primärschlüssel?
Verwandte Themen