Har problem när jag skulle skapa en trigger i SQL Express, kan ni se vad som är fel med följande trigger: Jag har ingen erfarenhet av triggers, men jag googlade lite och tror det ska vara något i denna stilen: --------------------------------------------------------------------------------- Nej det är UPDATE-satsen som är fel. /* Denna del kollar om triggern redan finns inkompilerad */ Ok, två veckor senare... Men kanske någon som läser ändå.Triggers i SQL Express 2005
CREATE TRIGGER updatestorage AFTER, INSERT ON Pallet
FOR EACH STATEMENT UPDATE storage s SET s.nbrPalletsAdded = s.nbrPalletsAdded + 1
WHERE NEW.pos = s.pos and NEW.artNbr = s.artNbr;
--------------------------------- ERROR ----------------------------------------
Msg 102, Level 15, State 1, Procedure updatestorage, Line 7
Incorrect syntax near 'AFTER'.
----------------------------------------------------------------------------------
Någon som har ett bra exempel på en trigger till SQL Express 2005?
----------------------------------------------------------------------------------
Använder mig av Microsoft SQL Server Management Studio Express
och den vill ha följande upplägg, men fattar inte riktigt...
CREATE TRIGGER <Schema_Name, sysname, Schema_Name>.<Trigger_Name, sysname, Trigger_Name>
ON <Schema_Name, sysname, Schema_Name>.<Table_Name, sysname, Table_Name>
AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE>
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
ENDSv: Triggers i SQL Express 2005
CREATE TRIGGER updatestorage
ON Pallet
FOR INSERT
AS
UPDATE storage s SET s.nbrPalletsAdded = s.nbrPalletsAdded + 1
WHERE Inserted.pos = s.pos and Inserted.artNbr = s.artNbr
/JohanSv:Triggers i SQL Express 2005
CREATE TRIGGER updatestorage
ON Pallet
FOR INSERT
AS
UPDATE storage s SET s.nbrPalletsAdded = s.nbrPalletsAdded + 1
WHERE Inserted.pos = s.pos and Inserted.artNbr = s.artNbr
---------------------------------------------------------------------------------
Msg 102, Level 15, State 1, Procedure updatestorage, Line 10
Incorrect syntax near 's'.
---------------------------------------------------------------------------------
Verkar vara något fel på deklareringen... Det är tydlingen skillnad mellan
vanliga MySQL triggers och SQL Express trigger i stilSv: Triggers i SQL Express 2005
Inget alias ska det vara efter tabellen som uppdateras.
Om du ska ha alias ska det ske efter SET, ung. "FROM storage s"
Sedan måste du ta med tabellen Inserted i UPDATE-satsen (JOIN).
Ungefär så här:
UPDATE storage SET nbrPalletsAdded = nbrPalletsAdded + 1
FROM storage s
INNER JOIN Inserted i ON (i.pos = s.pos) AND (i.artNbr = s.artNbr)
/Håkan
Varsågod lite hjälp traven!
/* Om den existerar så tar vi bort den. */
if exists (select * from sysobjects
where type = 'TR' and name = 'PersonTel_InsUpd')
drop trigger PersonTel_InsUpd
go
/* Skapa trigger */
create trigger PersonTel_InsUpd
on PersonTel
for insert
/*************************************************************************
** PersonTel_InsUpd
** OBS! Denna triggern gäller bara för insert.Om man vill att den även skall
** gälla för "update" så skriver man ovan "for insert,update eller delete"
**
**
** Projekt :
** Skapad :
** Skapad av:
** Ändringslogg:
**************************************************************************
** Felmeddelanden:
**************************************************************************/
as
begin
if (@@rowcount = 0) return
/* Deklarera variabler här */
/* Nedan bara exempel */
--declare @Aktivitet VARCHAR(4)
/* Skriv eventuell kod här. */
return
end
goSv: Triggers i SQL Express 2005
Jag jobbar inte med sql express men i sql server hade kompilatorn reagerat på komma-tecknet som du lagt efter "AFTER".
I sql server hade det sett ut så här:
CREATE TRIGGER updatestorage
ON Pallet
AFTER INSERT
AS
............osv.........