2017-06-01 43 views
0

即時試圖創建一個表上的觸發器與後續的特性MicrosoftSQL:如何創建一個觸發器中的表和插入值

  1. 無論何時更新是在Project_Ypalliloi(表名)使用我想創建另一個表(例如deleted_Ypalliloi)
  2. 我想借刪除線,並將其插入到新表

這是我的表:

create table Project_Ypalliloi 
(
arithmos_taut int primary key not null, 
onoma varchar(20)not null, 
eponymo varchar(20)not null, 
imerominia_proslipsis date not null, 
imerominia_gennisis date not null, 
misthos float 

) 

這是我的觸發器:

CREATE TRIGGER deleteTrigger ON Project_Ypalliloi FOR DELETE AS --errorline1 
DECLARE @arithmos_taut int 
DECLARE @onoma varchar(20) 
DECLARE @eponymo varchar(20) 
DECLARE @imerominia_proslipsis date 
DECLARE @imerominia_gennisis date 
DECLARE @misthos float 
DECLARE @getnamesCursor CURSOR 
SET @getnamesCursor = CURSOR FOR 
SELECT arithmos_taut,onoma,eponymo,imerominia_proslipsis,imerominia_gennisis,misthos FROM Project_Ypalliloi --where How can i get the deleted line?(under what condition?) 
OPEN @getnamesCursor 
FETCH NEXT FROM @getnamesCursor INTO @arithmos_taut,@onoma,@eponymo,@imerominia_proslipsis,@imerominia_gennisis,@misthos 
WHILE @@FETCH_STATUS = 0 
BEGIN 
INSERT INTO deleted_Ypalliloi Values '('+rtrim(@arithmos_taut) + ',' + rtrim(@onoma) + ',' + rtrim(@eponymo) + ' ,' + rtrim(@imerominia_proslipsis) + ',' + rtrim(@imerominia_gennisis) + ', ' + rtrim(@misthos)+')' 
--FETCH NEXT FROM @getnamesCursor INTO @c_name,@c_surname 
END --errorline 2 
CLOSE @getnamesCursor 
DEALLOCATE @getnamesCursor 

My trigger code is in the Query,and i get an error:"Incorrect Syndax at errorline 1 and errorline 2

非常感謝您的幫助

回答

1

USE 「已刪除」

CREATE TRIGGER deleteTrigger ON Project_Ypalliloi AFTER DELETE 
AS 
BEGIN 
DECLARE @arithmos_taut int; 
DECLARE @onoma varchar(20); 
DECLARE @eponymo varchar(20); 
DECLARE @imerominia_proslipsis date; 
DECLARE @imerominia_gennisis date; 
DECLARE @misthos float; 
SELECT @arithmos_taut = arithmos_taut, 
@onoma = onoma, @eponymo = eponymo, 
@imerominia_proslipsis = imerominia_proslipsis, 
@imerominia_gennisis = imerominia_gennisis, 
@misthos = misthos FROM DELETED; 
INSERT INTO deleted_Ypalliloi 
VALUES(@arithmos_taut, @onoma, @eponymo, @imerominia_proslipsis, @imerominia_gennisis, @misthos); 
END 

對於兩個或多個刪除的行

INSERT INTO deleted_Ypalliloi SELECT * FROM DELETED; 
+2

如果DELETED表中有多於1行,那麼這將不起作用。 – Sami

+0

也許我可以嘗試檢查,如果有超過1行。你認爲這將工作? – Phill

+0

我必須先創建一個名爲deleted_Ypalliloi的表嗎? – Phill

相關問題