看板 Database 關於我們 聯絡資訊
※ 引述《ruby0104 (:))》之銘言: : ※ 引述《alexcwtzeng (狂瀉不止)》之銘言: : : delete 可以 rollback,truncate 不行 : : delete 可以加 where 條件,truncate 不行 : delete 跟 truncate 都可以rollback : 提外話,這個問題面試的時候 還挺常問的 XD Oracle SQL 的說明 http://psoug.org/reference/truncate.html SQL-Server 的說明也很多,說明了 TRUNCATE table 如何 rollback ==== Example ===== USE tempdb CREATE TABLE t (c1 INT) INSERT INTO t SELECT BINARY_CHECKSUM(OrderID) FROM Northwind..Orders SELECT * FROM t BEGIN TRAN TRUNCATE TABLE t COMMIT TRAN SELECT * FROM t INSERT INTO t SELECT BINARY_CHECKSUM(OrderID) FROM Northwind..Orders BEGIN TRAN TRUNCATE TABLE t ROLLBACK TRAN SELECT * FROM t DROP TABLE t ==== End Example ==== 所以在 begin tran ... end tran 的 block 裏,所有的東西都可以 rollback。 但這是網路文章,我只是引述。SQL-Server 偶不會。 但是 Oracle Database 中,truncate table 與 delete table 是很大的不一樣滴。 在 ANSI/ISO standard 中說明 DDL 是屬於 autocommit 的指令。 而 truncate 是屬於 DDL 的指令。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.125.179.204
PsMonkey:糟糕,越來越不知道精華區要怎麼收了 T__T 08/30 12:10