关于SQL利用触发器删除表的问题
createtriggerDelStuScoreonexam_stuScorefordeleteasbegindroptabledeleted.paperdb_namee...
create trigger DelStuScore
on exam_stuScore
for delete
as
begin
drop table deleted.paperdb_name
end
我想创建一个触发器,当删除exam_stuScore表中数据时,就同时删除表名为被删数据中paperdn_name的表,可是我用deleted.paperdb_name想取出被删的数据,好像取不出来,就是出错,不存在名'deleted.paperdb_name'的表!
请高手赐教! 展开
on exam_stuScore
for delete
as
begin
drop table deleted.paperdb_name
end
我想创建一个触发器,当删除exam_stuScore表中数据时,就同时删除表名为被删数据中paperdn_name的表,可是我用deleted.paperdb_name想取出被删的数据,好像取不出来,就是出错,不存在名'deleted.paperdb_name'的表!
请高手赐教! 展开
6个回答
展开全部
不用那么麻烦
触发器里的内容直接如下
insert into delclasslist(StuID,Student,fid,StuClass,Teacher,cid)
select stuid,student,fid,stuclass,teacher,id from deleted
就可以了,你懂的。希望能有所帮助!欢迎到IT实验室,天天软件测试网看看MFM。365testing.com。MFM
触发器里的内容直接如下
insert into delclasslist(StuID,Student,fid,StuClass,Teacher,cid)
select stuid,student,fid,stuclass,teacher,id from deleted
就可以了,你懂的。希望能有所帮助!欢迎到IT实验室,天天软件测试网看看MFM。365testing.com。MFM
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
七鑫易维信息技术
2024-09-02 广告
2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分...
点击进入详情页
本回答由七鑫易维信息技术提供
展开全部
不用那么麻烦
触发器里的内容直接如下
insert into delclasslist(StuID,Student,fid,StuClass,Teacher,cid)
select stuid,student,fid,stuclass,teacher,id from deleted
就可以了,你懂的。欢迎共同讨论!欢迎到CSDN,365testing,测评网看看BJQ。365testing.com。BJQ
触发器里的内容直接如下
insert into delclasslist(StuID,Student,fid,StuClass,Teacher,cid)
select stuid,student,fid,stuclass,teacher,id from deleted
就可以了,你懂的。欢迎共同讨论!欢迎到CSDN,365testing,测评网看看BJQ。365testing.com。BJQ
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不用那么麻烦
触发器里的内容直接如下
insert into delclasslist(StuID,Student,fid,StuClass,Teacher,cid)
select stuid,student,fid,stuclass,teacher,id from deleted
就可以了,你懂的。欢迎共同讨论!欢迎到it168,365testing看看OGU。365testing.com。OGU
触发器里的内容直接如下
insert into delclasslist(StuID,Student,fid,StuClass,Teacher,cid)
select stuid,student,fid,stuclass,teacher,id from deleted
就可以了,你懂的。欢迎共同讨论!欢迎到it168,365testing看看OGU。365testing.com。OGU
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
begin
declear @table_name nvarchar(50)
set @table_name = select paperdn_name from deleted
exec 'drop table '+ @table_name //因为表名是字符串,不能直接执行,所以拼接SQL
end
declear @table_name nvarchar(50)
set @table_name = select paperdn_name from deleted
exec 'drop table '+ @table_name //因为表名是字符串,不能直接执行,所以拼接SQL
end
追问
create trigger DelStuScore
on exam_stuScore
for delete
as
begin
declare @table_name nvarchar(50)
set @table_name = select paperdb_name from deleted
exec 'drop table' + @table_name
end
关键字 'select' 附近有语法错误
'drop table' 附近有语法错误啊
按你这样写出了这两个错误啊,咋办好?我对sql不熟悉>_<、
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
create trigger DelStuScore
on exam_stuScore
for delete
as
begin
declare @sql nvarchar(4000)
set @sql = ''
select @sql = @sql + 'drop table ' + paperdb_name + ';' from deleted
execute(@sql)
end
on exam_stuScore
for delete
as
begin
declare @sql nvarchar(4000)
set @sql = ''
select @sql = @sql + 'drop table ' + paperdb_name + ';' from deleted
execute(@sql)
end
追问
万分感谢终于行了,有一个地方不是很明白,请问一下:
select @sql = @sql + 'drop table ' + paperdb_name + ';' from deleted
为什么from deleted要放到 ;号后面呢?而不是
select @sql = @sql + 'drop table ' + deleted.paperdb_name ?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询