两个表格包含以下列: -
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
答案 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
值