如何获得创建数据库中所有索引和触发器,以及如何删除全部索引及触发器的语句

LinuxSon 2007-05-25 09:47:45
因为工作的需要,我需要先删除当前数据库中全部的索引和触发器,然后在进行了一系列工作之后,我还要将索引和触发器恢复,所以在删除索引和触发器前我需要得到创建当前数据库中全部索引和触发器的语句,同时我也需要删除全部索引和触发器的语句,麻烦知道的兄弟赐教一下,先谢了!
...全文
298 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LinuxSon 2007-05-25
  • 打赏
  • 举报
回复
谢谢4楼的。对于创建触发器刚才已经在参考手册中找到了方法“Select A.text From syscomments A Where A.id in (Select B.id From syscomments B Where B.text like '%CREATE TRIGGER%')”,在syscomments表中的text字段存放了触发器的SQL语法,但是text字段类型为char(255),所以一个触发器的语法会有多条记录,在检索回的语句中可能会出现“Select @ls_Discount=A.Discou
nt, @ls_FloatLevel=A.FloatLevel这样的语句A.Discou和nt在两行且还有空格,这样的语句执行会有问题吗?
hobbylu 2007-05-25
  • 打赏
  • 举报
回复
select 'drop index '+object_name(id)+'.'+name+char(10)+'go' from sysindexes where id in (select id from sysobjects where type='U')这是drop index的脚本
一次性生产所有create的脚本,你可以借助其他工具,或者自己写东西
LinuxSon 2007-05-25
  • 打赏
  • 举报
回复
谢谢楼上的回复,刚才看了下最后的条件应是type = 'TR',但是这只是删除触发器,创建触发器和创建索引和删除索引,你知道吗,如果知道也请一并告知,谢谢!
咖啡老猫 2007-05-25
  • 打赏
  • 举报
回复
首先用select 'drop index ' + name from sysobjects where type = 'T'
这个是触发器.
然后用执行出来的结果就可以了.
LinuxSon 2007-05-25
  • 打赏
  • 举报
回复
我后来通过PowerDesigner已经实现了上述功能,谢谢楼上的各位了!

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧