-------- 创建测试库及测试表 ----------
USE [master]
GO
--创建测试库
IF EXISTS(SELECT 1 FROM sys.databases AS d WHERE d.name='db1')
DROP DATABASE db1
GO
IF EXISTS(SELECT 1 FROM sys.databases AS d WHERE d.name='db2')
DROP DATABASE db2
GO
CREATE DATABASE db1
GO
CREATE DATABASE db2
GO
CREATE TABLE db1.dbo.t(id INT)
CREATE TABLE db2.dbo.t(id INT)
GO
-------- 创建测试库及测试表完毕 ----------
-- 1. master 库上增加创建触发器的存储过程
-- 创建触发器脚本你自己修改……
USE [master]
GO
IF OBJECT_ID('dbo.Proc_CreateTrigger') IS NOT NULL
DROP PROC dbo.Proc_CreateTrigger
GO
CREATE PROC Proc_CreateTrigger
@dbName NVARCHAR(200)
AS
BEGIN
DECLARE @sql NVARCHAR(MAX),@sql2 NVARCHAR(MAX)
SET @sql='create trigger dbo.trig_t_I
on t
for insert
as
BEGIN
select * from inserted
END'
SET @sql2='use '+@dbName+' EXEC('' '+@sql+' '') '
PRINT @sql2
EXEC (@sql2)
END
GO
--遍历所有 db 开头,后面带一个数字 的库(如何选择库,你自己根据需要改一下)
--如果没有 trig_t_I 触发器的,为其加上
EXEC sp_MSforeachdb 'if "?" like "db[0-9]" and object_id(''?.dbo.trig_t_I'') is null
begin
EXEC master.dbo.Proc_CreateTrigger ''?''
end
'
USE db1
INSERT INTO t VALUES (1)
USE db2
INSERT INTO t VALUES (2)
/*
id
1
id
2
*/
在多个库上批量创建触发器
最新推荐文章于 2022-09-06 14:13:15 发布