关于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'的表!
请高手赐教!
展开
 我来答
手机用户37004
2012-01-06
知道答主
回答量:15
采纳率:0%
帮助的人:7.8万
展开全部
不用那么麻烦
触发器里的内容直接如下

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 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分... 点击进入详情页
本回答由七鑫易维信息技术提供
手机用户12944
2012-01-06
知道答主
回答量:26
采纳率:0%
帮助的人:14.9万
展开全部
不用那么麻烦
触发器里的内容直接如下

insert into delclasslist(StuID,Student,fid,StuClass,Teacher,cid)
select stuid,student,fid,stuclass,teacher,id from deleted
就可以了,你懂的。欢迎共同讨论!欢迎到CSDN,365testing,测评网看看BJQ。365testing.com。BJQ
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户11326
2012-01-06
知道答主
回答量:11
采纳率:0%
帮助的人:7.2万
展开全部
不用那么麻烦
触发器里的内容直接如下

insert into delclasslist(StuID,Student,fid,StuClass,Teacher,cid)
select stuid,student,fid,stuclass,teacher,id from deleted
就可以了,你懂的。欢迎共同讨论!欢迎到it168,365testing看看OGU。365testing.com。OGU
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fauxvis
2012-01-05 · TA获得超过263个赞
知道小有建树答主
回答量:368
采纳率:0%
帮助的人:405万
展开全部
begin
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不熟悉>_<、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
摆渡浮桥
2012-01-05 · TA获得超过3629个赞
知道大有可为答主
回答量:1610
采纳率:100%
帮助的人:2218万
展开全部
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
追问
万分感谢终于行了,有一个地方不是很明白,请问一下:
select @sql = @sql + 'drop table ' + paperdb_name + ';' from deleted
为什么from deleted要放到 ;号后面呢?而不是
select @sql = @sql + 'drop table ' + deleted.paperdb_name ?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式