我的简单问题是,我可以在Transaction中放置Create / Alter Table,Procedure,Column,Views等语句吗?我的意思是这个?以下陈述是否有效?
BEGIN TRANSACTION [Tran1]
BEGIN TRY
--CREATE ALTER Table Procedure
--CREATE ALTER Table Procedure
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION [Tran1];
DECLARE @ErrorNumber nchar(5), @ErrorMessage nvarchar(2048);
SELECT
@ErrorNumber = RIGHT('00000' + ERROR_NUMBER(), 5),
@ErrorMessage = @ErrorNumber + ' ' + ERROR_MESSAGE();
RAISERROR (@ErrorMessage, 16, 1);
END CATCH
答案 0 :(得分:2)
据我所知,在读取提交隔离模式(悲观)中,DDL语句可以是事务性的,这是默认模式。
答案 1 :(得分:1)
Transact-SQL Statements Allowed in Transactions (Sql Server 2008):您可以在显式事务中使用所有Transact-SQL语句,但以下语句除外:
ALTER DATABASE
DROP DATABASE
ALTER FULLTEXT CATALOG
DROP FULLTEXT CATALOG
ALTER FULLTEXT INDEX
DROP FULLTEXT INDEX
BACKUP
RECONFIGURE
CREATE DATABASE
RESTORE
CREATE FULLTEXT CATALOG
UPDATE STATISTICS
CREATE FULLTEXT INDEX
您也无法使用以下内容:
显式事务中的全文系统存储过程。有关详细信息,请参阅全文搜索存储过程(Transact-SQL)。
sp_dboption用于设置数据库选项或使用在显式或隐式事务中修改master数据库的任何系统过程。