Oracle数据库事务回滚和提交,数据库 事务提交和回滚
事務? -? (transaction / tx)
原子性操作性(不可以分割的操作) - 要么全做, 要么全不做
事務的特點? -? ACID 特性
A - atomicity? 原子性 : 不可分割, 要么成功要么全失敗
C - Consistency? 一致性:? 事務前后數據狀態要保持一致, 總數一致
I - Isolation -? 隔離性 : 多個事務不能看到對方的中間狀態(提交或者回滾之前的狀態)
D - Duration 持久性: 事務完成后數據要持久化(事務的影響要反映在物理存儲上)
不需要顯式使用事務語句開始一個事務,當遇到第一個DML語句時,一個事務開始,在出現以下情況時,事務結束。
(1)當遇到 commit 語句 或 rollback 語句時,將提交或回滾事務。
(2)當用戶退出Oracle工具時。
(3)當機器失效或系統奔潰時。
操作方法
begin; -開始事物
commit; - 提交事物
Python 默認是取消自動提交的
rollback- 回撤操作, 只要操作沒有執行 commit 就可以進行回滾操作, 撤回
例如:
create table tb_account
(
accid char(4) not null,
uname varchar(20) not null,
balance float default 0
)
insert into tb_account values
('1111', '張明祿', 1200.99),
('2222', '王大錘', 500);
-- 開啟一個事物?? start transaction
begin;
update tb_account set balance=balance-1000
where accid='1111';
update tb_account set balance=balance+1000
where accid='2222';
commit;?? -- 提交 才能改變
rollback;? -- 撤銷
begin;
delete from? tb_account;? -- 沒有commmit 不會刪除表
rollback;
SQL 注射***
def main():
config = {
'host': 'localhost',
'user': 'root',
'passwd': '123456',
'db': 'hrs',
'charset': 'utf8',
'cursorclass': pymysql.cursors.DictCursor
}
conn = pymysql.connect(**config)
try:
uid = input('用戶名: ')
pwd = input('密碼: ')
with conn.cursor() as cursor:
# 注射***的萬能密碼: a' or '1'='1
"""
sql = "select 'x' from tb_user where username='%s' \
and userpass='%s'" % (uid, pwd)
if cursor.execute(sql) > 0:
"""
# cursor.callproc('sp_dept_avg_sal', ())
# 定義存儲過程 / PyMySQL調用存儲過程
if cursor.execute(
'select 1 from tb_user where username=%s and userpass=%s',
(uid, pwd)):
print('登錄成功, 開始使用系統')
else:
print('用戶名或密碼錯誤')
finally:
conn.close()
守護進程
守護進程(Daemon Process),也就是通常說的 Daemon 進程(精靈進程),是 Linux 中的后臺服務進程。它是一個生存期較長的進程,通常獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的事件。
守護進程是個特殊的孤兒進程,這種進程脫離終端,為什么要脫離終端呢?之所以脫離于終端是為了避免進程被任何終端所產生的信息所打斷,其在執行過程中的信息也不在任何終端上顯示。由于在 linux 中,每一個系統與用戶進行交流的界面稱為終端,每一個從此終端開始運行的進程都會依附于這個終端,這個終端就稱為這些進程的控制終端,當控制終端被關閉時,相應的進程都會自動關閉。
哈希
Hash,一般翻譯做“散列”,也有直接音譯為“哈希”的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來確定唯一的輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。
總結
以上是生活随笔為你收集整理的Oracle数据库事务回滚和提交,数据库 事务提交和回滚的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle空值判断 =,Oracle,
- 下一篇: oracle多次发运,Oracle EB