创建TRIGGER:两个表USER&文件。用户上传文件时,USER表中的USER_ID列必须在其他表FILE中生成

时间:2015-03-26 16:09:12

标签: sql-server-2008

两个表格包含以下列: -

USER user_id,密码,user_name

FILE 的file_id,FILE_NAME,USER_ID

如何创建触发器,当任何用户上传文件时,该触发器将在FILE表中显示user_id。

create table FILE 
(
file_id int identity(1,1),
file_name varchar(30),
user_id int
)

create table USER
(
user_id int identity(1,1),
user_name nvarchar(30),
specialization nvarchar(20),
date_of_upload datetime )


     create trigger T1
     ON dbo.USER
     AFTER UPDATE OF user_id ON USER
     FOR EACH ROW
     WHEN  //condition
     BEGIN
     INSERT INTO FILE (USER_ID)
     SELECT USER_ID FROM USER 
     END

1 个答案:

答案 0 :(得分:0)

有几件事:

  • SQL Server没有FOR EACH ROW功能 - 如果您在单个语句中更新10行,则触发器将被称为一次,其中包含10行{{ 1}}和Deleted伪表

  • 您无法在触发器上定义列标准 - 只要表中的某些内容更新,就会调用触发器

请尝试使用此代码:

Inserted

这将插入 CREATE TRIGGER T1 ON dbo.USER AFTER UPDATE AS INSERT INTO dbo.FILE(USER_ID) SELECT i.USER_ID FROM Inserted i WHERE NOT EXISTS (SELECT * FROM dbo.USER WHERE USER_ID = i.USER_ID) END 表中尚未包含的所有USER_ID