视图中的MS SQL事务



是否可以在视图中创建事务?例如:

CREATE View NewView
AS
BEGIN TRANSACTION
SELECT * FROM TableA
COMMIT
GO

不,不能在视图中使用事务,因为视图用于返回一个或多个表中的行,它们不能对表进行更改,因此不需要事务。

当然,您可以将SELECT查询放入交易中:

BEGIN TRANSACTION
SELECT * FROM NewView
COMMIT

但这是完全没有必要的。在这里,你可以找到一些关于什么是交易以及何时使用它们的解释:

https://www.mssqltips.com/sqlservertutorial/3304/what-is-a-transaction/

https://learn.microsoft.com/en-us/sql/t-sql/language-elements/transactions-transact-sql?view=sql-服务器-ver15

https://www.c-sharpcorner.com/UploadFile/84c85b/understanding-transactions-in-sql-server/

如果您记得视图是只读操作,事务是用于CUD操作的,那么这应该可以回答您的问题。

如果您试图避免阻塞或获取不正确的数据,请使用数据库引擎中的不同提示来获取所需的正确数据。

最新更新