2017-06-01 42 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

相关问题