當前位置:首頁 » 編程語言 » 事務提交後生效的sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

事務提交後生效的sql

發布時間: 2022-07-15 23:02:00

⑴ 請問:提交一個事務採用的sql動詞為

SQL的事務具有原子性,一個不可分割的整體,要麼都提交,要麼都失敗。
您問到的提交的動詞為:commit,以確認自己的更新;
而如果不想進行提交,可以用rollback進行回滾;
當然前提是對DML語句(數據操縱語言,如insert,update等),
對DDL(數據定義語言,如create等)是無效的,因為DDL語句包含commit的意思。
希望回答讓您滿意。

⑵ 詳解SQL中drop,delete和truncate的異同

不同點:1.從刪除內容上區分:truncate和delete只刪除數據不刪除表的結構(定義)drop語句將刪除表的結構、被依賴的約束(constrain),觸發器(trigger),索引(index);依賴於該表的存儲過程/函數將保留,但是變為invalid狀態.2.從語句類型上來區分:delete語句是dml,這個操作會放到rollbacksegement中,事務提交之後才生效;如果有相應的trigger,執行的時候將被觸發.truncate,drop是ddl,操作立即生效,原數據不放到rollbacksegment中,不能回滾.操作不觸發trigger.3.從對表空間的影響來區分:delete語句不影響表所佔用的extent,高水線(highwatermark)保持原位置不動drop語句將表所佔用的空間全部釋放truncate語句預設情況下將空間釋放到minextents個extent,除非使用reusestorage;而且truncate會將高水線復位(回到最開始).4.從速度的區別:一般來說:drop>truncate>delete

⑶ SQL 語句里delete 和drop有什麼區別

1、執行速度不同

drop語句的速度要大於delete語句。

2、語言種類不同

delete語句是DML語言,不會自動提交。

drop語句是DDL語言,執行後會自動提交。



3、功能不同

delete語句用於刪除局部性數據如表中的某一元組。

drop語句一般用於刪除整體性數據如表,模式,索引,視圖,完整性限制等。

4、刪除形式不同

delete語句刪除內容、釋放空間但不刪除定義,但是delete既可以對行數據進行刪除,也可以對整表數據進行刪除。

drop語句刪除內容和定義,並釋放空間。執行drop語句,將使此表的結構一起刪除。

⑷ 關於SQL資料庫事務的提交問題

如果第二種寫法取得@@error值後僅僅執行不帶附加選項的rollback操作的話,與第一種寫法是沒有什麼區別的,都會回滾的事務的開始,也就是begin transaction開始的位置。
如果在rollback中指定了回滾到某個保存點,那麼肯定就跟第一種寫法有區別了。我們可以在事務執行某些操作後設置一個或多個保存點,這樣就可以使事務回滾到指定的保存點,而不必全部回滾。

⑸ 事務在SQL中有什麼作用

事務的好處在於,當你需要對多個表進行相關性操作時,使用BeginTrans()開啟事務,然後操作,如果中間哪個表更新出錯了,或者數據有問題,你可以用RollBack()方法在取消之前的相關性操作,如果沒有錯,那就使用Commit()方法提交你的修改。另外,在這個過程中,所有你改動的內容只對你自己有效,別人不能知道你改了什麼,也不能對你正在改的表做修改,直到你提交之後,別人才能修改這些表,檢索出你修改過的內容。

⑹ 在SQL語言中,用於事務提交的語句是什麼,收回許可權的命令是什麼

提交事務:commit transaction;回滾事務:rollback transaction

⑺ 在SQL執行事務操作的時候的問題

默認的話是使用完畢後就釋放的,當然,如果人為設置了事務的隔離級別,可以參考sql幫助文檔的介紹:

語法
SET TRANSACTION ISOLATION LEVEL
{ READ COMMITTED
| READ UNCOMMITTED
| REPEATABLE READ
| SERIALIZABLE
}

參數
READ COMMITTED

指定在讀取數據時控制共享鎖以避免臟讀,但數據可在事務結束前更改,從而產生不可重復讀取或幻像數據。該選項是 SQL Server 的默認值。

READ UNCOMMITTED

執行臟讀或 0 級隔離鎖定,這表示不發出共享鎖,也不接受排它鎖。當設置該選項時,可以對數據執行未提交讀或臟讀;在事務結束前可以更改數據內的數值,行也可以出現在數據集中或從數據集消失。該選項的作用與在事務內所有語句中的所有表上設置 NOLOCK 相同。這是四個隔離級別中限制最小的級別。

REPEATABLE READ

鎖定查詢中使用的所有數據以防止其他用戶更新數據,但是其他用戶可以將新的幻像行插入數據集,且幻像行包括在當前事務的後續讀取中。因為並發低於默認隔離級別,所以應只在必要時才使用該選項。

SERIALIZABLE

在數據集上放置一個范圍鎖,以防止其他用戶在事務完成之前更新數據集或將行插入數據集內。這是四個隔離級別中限制最大的級別。因為並發級別較低,所以應只在必要時才使用該選項。該選項的作用與在事務內所有 SELECT 語句中的所有表上設置 HOLDLOCK 相同。

注釋
一次只能設置這些選項中的一個,而且設置的選項將一直對那個連接保持有效,直到顯式更改該選項為止。這是默認行為,除非在語句的 FROM 子句中在表級上指定優化選項。

SET TRANSACTION ISOLATION LEVEL 的設置是在執行或運行時設置,而不是在分析時設置。

⑻ sql的事務問題

如果沒有猜錯,樓主應該是在執行COMMIT TRANSACTION tran3 後,直接在當前的查詢界面查看的表裡的數據吧?對於當前會話,即使你沒有執行COMMIT,所有數據都會在當前的會話里發生變化,你可以不執行COMMIT TRANSACTION tran3,直接查看錶里的數據,你會看到即使沒有提交任何事物,表裡的數據還是發生變化了。如果你再打開一個查詢窗口,你會發現直接從testtran 表裡select數據是會一直等待的,因為其它會話(也就是開始你執行begin tran那個會話)有事務沒有提交,表是鎖定的。事務是用來保證多個會話之間不會應為事務不一致而產生臟數據。對同一會話,是看不出效果的。

⑼ SQL中表示事務執行成功的語句是什麼

if(mysql_affected_rows() > 0) {
echo "成功";
}

int mysql_affected_rows ( [resource link_identifier] ) :
執行成功則返回受影響的行的數目,如果最近一次查詢失敗的話,函數返回 -1。

⑽ sql 中關於delete drop alter

sql中delete,drop ,truncate都代表刪除,但3者又有一些區別
1. truncate和 delete只刪除數據不刪除表的結構(定義)
    drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴於該表的存儲過程/函數將保留,但是變為invalid狀態.
2.delete語句是dml,這個操作會放到rollback segement中,事務提交之後才生效;如果有相應的trigger,執行的時候將被觸發.
   truncate,drop是ddl, 操作立即生效,原數據不放到rollback segment中,不能回滾. 操作不觸發trigger.
3.delete語句不影響表所佔用的extent, 高水線(high watermark)保持原位置不動
  顯然drop語句將表所佔用的空間全部釋放
  truncate 語句預設情況下見空間釋放到 minextents個 extent,除非使用reuse storage;   truncate會將高水線復位(回到最開始).
4.速度,一般來說: drop>; truncate >; delete
5.安全性:小心使用drop 和truncate,尤其沒有備份的時候.否則哭都來不及
使用上,想刪除部分數據行用delete,注意帶上where子句. 回滾段要足夠大.
想刪除表,當然用drop
想保留表而將所有數據刪除. 如果和事務無關,用truncate即可. 如果和事務有關,或者想觸發trigger,還是用delete.
如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數據

在實際應用中,三者的區別是明確的。
當你不再需要該表時, 用 drop;
當你仍要保留該表,但要刪除所有記錄時, 用 truncate;
當你要刪除部分記錄時(always with a WHERE clause), 用 delete.

而alter是對表結構的修改.
希望對你理解有幫助。