请教数据库触发器的问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 20:15:34
是这样的,当有数据插入SONGS_MAIN表时(插入的字段只有SONGS_NAME,SONGS_NUMBER,RESERVE1),需要创建一个触发器自动修改SONG_SINGER这个字段。SONG_SINGER是通过查询另外一个数据库的表得到的。我写了一个触发器如下:
create trigger update_songs_main
on SONGS_MAIN
for insert as
begin
DECLARE @RESERVE1 INT,@SONG_SINGER varchar(30)
SELECT @RESERVE1=RESERVE1 FROM inserted
SELECT @SONG_SINGER=MS_SINGERNAME from music..MC_SINGER where MS_SINGERID=@RESERVE1
update SONGS_MAIN set SONG_SINGER=@SONG_SINGER WHERE RESERVE1=@RESERVE1

end
但问题是当只插入一条记录时表会自动更新,当一次插入多条记录时,只会更新最后的一条记录。好像要用游标才能全部更新,所以想请教一下大家这个触发器用游标怎么写,谢谢大家!表结构如下:
CREATE TABLE dbo.SONGS_MAIN
(
SONGS_ID numeric(18,0) IDENTITY,
SONG_SINGER varchar(30) NULL,
SONGS_NAME varchar(30) NOT NULL,
SONGS_NUMBER varchar(30) NOT NULL,
RESERVE1 int NULL,
RESERVE2 varchar(255) NULL
)

CREATE TABLE dbo.MC_SINGER
(
MS_SINGERID

--创建作业是这样的

企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句
--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排

然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行

设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定