2017-06-01 4 views
0

イムは、私がしたいMicrosoftSQL:トリガー内でテーブルを作成し、挿入は

  1. たびおよびUPDATEがProject_Ypalliloi(テーブル名)で使用されているフォロー特性を持つテーブルにトリガを作成しようとしている値にどのように
  2. は私が削除された行を利用したいと思い(例えばdeleted_Ypalliloiため)別の表を作成し、新しい表

に挿入し、これは私のテーブルです:

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

"DELETED FROM" を使用

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'テーブルに2つ以上の行がある場合、これは動作しません。 – Sami

+0

おそらく、私は何とか1行以上あるかどうかを調べることができます。あなたはそれがうまくいくと思いますか? – Phill

+0

まず、deleted_Ypalliloiというテーブルを作成する必要がありますか? – Phill

関連する問題