![](/img/trans.png)
[英]SQL Server create User-Defined Table Types with schema not working properly
[英]Why is CREATE TABLE command not working in a user-defined transaction?
對於這個愚蠢的問題,我事先表示歉意,但是我無法弄清楚為什么CREATE TABLE在以下所示的代碼中沒有回滾。 我知道不能在用戶定義的事務中指定CREATE DATABASE,CREATE FULLTEXT CATALOG和CREATE FULLTEXT INDEX。 請注意,執行此代碼時,SSMS中的Tables文件夾被鎖定。
BEGIN TRANSACTION T1
CREATE TABLE temp
(
chisla char(1)
)
SELECT count(chisla) AS Count, chisla AS My_Numbers
FROM temp
--GROUP BY chisla
ORDER BY chisla
drop table temp
COMMIT TRANSACTION T1
GO
您沒有告訴它回滾。 JNK展示了如何在發生可捕獲錯誤的情況下嘗試執行Catch應該回滾事務處理。 但是,在這種情況下使用不正確的SQL,無論如何它都不會回滾,因為它是不可陷阱的錯誤。 您必須在SQl中具有正確的語法,事務才能正常工作,這是動態SQl可能非常危險的原因之一,因為它無法完全測試。
無論如何,在這種情況下動態創建表是一個壞習慣。 如果臨時需要某些內容,請使用臨時表或表變量,請勿創建永久表,如果操作失敗,該表將回滾創建表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.