我有一个查询,我可以从sys.databases中选择我希望更新的触发器的数据库。从那里我可以创建一个游标。但是当我进入光标更新我的触发器使用动态数据库名称@DatabaseExecuteName
设置为MyDatabaseName.dbo
我收到错误''CREATE/ALTER TRIGGER' does not allow specifying the database name as a prefix to the object name.'
因为我在光标我不能执行USE MyDatabaseName
... GO,GO语句是不允许在CURSOR内部。我尝试使用SQLCMD模式:setvar DatabaseName "MyDatabaseName"
和USE [$(DatabaseName)];
尝试设置使用数据库。我觉得我非常接近,但我的实力不是SQL查询。我可以使用一些我缺少的帮助。如何更新多个数据库中的触发器?
0
A
回答
1
您可以嵌套EXEC
调用,以便您可以使用USE
,然后执行进一步的语句,并且不需要使用GO
来分隔批次。这是一个完整的脚本来演示该技术:
create database DB1
go
create database DB2
go
use DB2
go
create table T1 (ID int not null)
go
create table T2 (ID int not null)
go
use DB1
go
exec('use DB2; exec(''create trigger T_T on T1 after insert as
insert into T2(ID) select i.ID from inserted i'')');
select DB_NAME()
insert into DB2..T1(ID) values (1),(2);
select * from DB2..T2
然后显示,这方面仍处于DB1
数据库,但是触发成功的DB2
数据库中的表T1
创建。
你必须注意的是让你的报价逃避正确。
+0
这样做,谢谢你的例子。 – JabberwockyDecompiler
相关问题
- 1. 更新另一个数据库中的表的触发器
- 2. 触发更新另一个数据库中的数据
- 3. 如何使用触发器更新另一个数据库中的表?
- 4. Eclipselink和更新触发器多次访问数据库
- 5. 如何使用codeIgniter按时间更新数据库触发器?
- 6. 触发数据库更新的窗体
- 7. 如何让按钮触发ATK4中的数据库更新?
- 8. 如何更新触发器中的多个表和字段?
- 9. 如何创建一个数据库级别的触发器来插入/更新
- 10. SQL触发器 - 每当另一个数据库中的另一个表正在更新时如何更新表?
- 11. 多行更新触发器
- 12. 多行更新触发器
- 13. 更新触发器在多记录更新上触发的频率如何?
- 14. 如何在触发器中放置多个更新?
- 15. 用触发器更新多个表
- 16. 通过触发器更新多个行
- 17. 在MySQL数据库中放置触发器以更新Oracle数据库?
- 18. mysql触发器从数据库中选择并更新列
- 19. 如何在sql中更改数据库时执行触发器
- 20. 多个数据库更新:
- 21. 如何刷新wpf数据触发器?
- 22. 是否有可能从另一个Firebird数据库中的触发器更新一个Firebird数据库?
- 23. TSQL触发器中的更新函数
- 24. 如何根据数据库中的更新触发Asp.net应用程序?
- 25. H2数据库触发器
- 26. Informix数据库触发器
- 27. 使用触发器来更新数据库缓存
- 28. Mysql中的跨数据库触发器
- 29. 确定哪个表在数据库级触发器中已更新
- 30. 数据更新复制时触发器不触发
查看动态SQL并在开始时使用'USE'。 –
Jens
即使使用动态SQL,它也给我提出了同样的问题。 select语句可以工作,但触发器不允许我在触发器对象之前形成'MyDatabaseName.dbo'。动态SQL确实表明我使用了正确的数据库名称,甚至在查询中使用ExecSQL语句形成了'USE [MyDatabaseName]'查询。我仍然看到错误,触发器不存在。如果我放置在光标内,我会在'go'语句附近收到错误。 – JabberwockyDecompiler