是否可以在视图中创建事务?例如:
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操作的,那么这应该可以回答您的问题。
如果您试图避免阻塞或获取不正确的数据,请使用数据库引擎中的不同提示来获取所需的正确数据。