1. 程式人生 > >MYSQL常見概念一: 事務

MYSQL常見概念一: 事務

定義: 簡而言之是一個sql或者是多個sql的操作集,在執行過程中,要麼都成功,要麼都失敗

  特點 : 事務有四大特性: 原子性  (整個事務包含的sql要麼都執行成功,要麼都失敗)

                                          一致性 (資料庫在事務執行前與執行後是一致的,資料能夠對的上

                                          隔離性 (多個事務之間不相互影 響)

                                          永續性  (事務一旦完成,對資料庫的影響是永續性的,不會因為資料庫故障丟失事務)

   事務併發問題:    髒讀:   一個事務A讀取了另一個事務B未提交的資料,事務B回滾,會造成A讀了額外的資料(髒資料)

  幻讀:  事務A查資料庫,發現沒有該記錄,於是插入該記錄,結果事務B早一步插入,感覺事務A是在幻讀

                              不可重複讀: 事務A多次查詢資料庫,事務B在多次查詢過程更改了資料表,造成事務A多次讀取結果不一致

   事務隔離鎖級別:  

 事務隔離級別髒讀            不可重複讀    幻讀           
 read-uncommitted允許允許允許
 read-committed不允許允許允許
 repeatable-read不允許不允許允許
 serializable不允許不允許不允許

   其他:    mysql中實現了事務的引擎有: innodb , bdb

   事務sql例項:

 建表:

CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `pass` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT '2018-01-01 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `institution_users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `institution_id` int(11) unsigned,
  `user_id` int(11) unsigned,
  `created_at` timestamp NOT NULL DEFAULT '2018-01-01 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



事務插入資料:

BEGIN;
INSERT INTO users(name,pass,created_at) VALUES('test_user','123456',NOW());
set @my = (select last_insert_id() as user_id);
INSERT INTO institution_users(institution_id,user_id,created_at) VALUES(170,@my,NOW());
COMMIT;
-- 如果報錯,手動rollback
-- ROLLBACK;

相關推薦

MYSQL常見概念: 事務

定義: 簡而言之是一個sql或者是多個sql的操作集,在執行過程中,要麼都成功,要麼都失敗  特點 : 事務有四大特性: 原子性  (整個事務包含的sql要麼都執行成功,要麼都失敗)                                          一致性

MYSQL常見概念二 : 觸發器

定義:資料庫某張表的增加、刪除、更新的操作觸發預先定義的sql執行 特性:  引起觸發器執行的操作與觸發器內定義的sql,要麼一起執行,要麼一起不執行 應用場景:  1.   資料備份,往一張表插入資料,需要往另外一張表同步時                    2.  

Mysql常見問題(

1、最簡單的sql語句如CREATE TABLE `student1`報錯,create下始終有一個紅色波浪線,這是因為,先打開了編寫SQL的視窗,在外面再建了表。他的智慧提示不同步。關了這個SQL視窗,重新再開啟一個,就沒有問題。 報錯為 error code 1064 2、報錯No suit

Swift學習筆記六:常見概念

七、常見概念1.範圍Range、ClosedRange和NSRange的使用//區間分為閉區間和半開區間import Foundationlet closedRange: ClosedRange = 1...3 //閉區間let intArray = ["1", "2", "

mysql錯誤【】[ERROR] Missing system table mysql.proxies_priv

mysql錯誤 環境:mysql一主一從架構,主庫是mysql5.1,從庫是mysql5.6;系統均為CentOS6.2 問題: 在主庫上面執行的SQL語句 1.創建表 CREATE TABLE `app_versions` ( `date` date NO

MySQL基本概念以及簡單操作

software 倉庫 必須 key 不能 即使 同時 databases ecif 一、MySQL   MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於Oracle 旗下產品。MySQL 是最流行的關系型數據庫管理系統之一,在 WEB

MySQL故障處理例_Another MySQL daemon already running with the same unix socket

read mon 解決 roo blog local 啟動mysql style 處理 MySQL故障處理一例:“Another MySQL daemon already running with the same unix socket”。 [root@test-121

MySQL學習()ODBC 安裝

oca local new cmd 密碼 服務 關閉 mysql 系統 寫前說明 初次接觸MySQL,都說MySQL各種好。我也來學習學習。之前只有SQLServer2008的經驗,其實也只是皮毛。因為SQLServer還是比較容易上手的。也不麻煩。但是自己

Dapper EF 等orm Mysql不支持事務解決辦法

inno 切換 命令行 type lac 管理員 access 是什麽 更新 MySQL表類型MyISAM和InnoDB區別 MyISAM:這個是默認類型,它是基於傳統的ISAM類型,ISAM是Indexed Sequential Access Method (有索引的順序

MySQL取上條數據的某個字段值

arch oracle ble led ora 定義 declare 自定義 default SELECT @lagfield ,@lagfiled := targField, t.*FROM TABLE t, (SELECT @lagfield := ‘‘) r其中tar

Python/ MySQL練習題(

姓名 insert avg when 並且 記錄 有效 完全 cas Python/ MySQL練習題(一) 2、查詢“生物”課程比“物理”課程成績高的所有學生的學號 1 SELECT 2 * 3 FROM 4 ( 5 SELEC

MYSQL的學習()Mysql數據庫

relation 使用 size strong 什麽 bms 表格 書籍 訪問 1.什麽是數據庫? 數據庫(database)是按照數據結構來組織.存儲和管理數據的倉庫 2.關系型數據庫管理系統(Relational Database Management Syste

mysql兩主從配置

mysqld_multi管理多個數據庫實例 數據庫兩主一從同步 三臺服務器:主機192.168.11.126,192.168.11.127,從:192.168.11.128準備同步的庫:192.168.11.126 ,account_db,192.168.11.127,game_db;首先在各自服務器

php 連接mysql 錯誤排查

php mysql 連接錯誤 php後臺接不上mysql數據庫,查看phpinfo,mysql驅動正常。查看日誌 發現配置正確,連接被拒,猜想可能是用戶權限的問題進入數據庫查看用戶和權限 [[email protected]/* */ wezchina]# mysql -h 192.1

Mysql基本命令

one opera operate sql日誌 trunc 基本 字段類型 原來 結構 一、清除mysql表中數據 delete from 表名;truncate table 表名;不帶where參數的delete語句可以刪除mysql表中所有內容,使用truncate t

MYSQL數據庫事務介紹

mysql 數據庫 介紹 一、數據庫事務介紹 簡單地說,事務就是指邏輯上的一組SQL語句操作,組成這組操作的各個SQL語句, 執行時要麽全成功要麽全失敗。 列如:小明給小紅轉賬5塊錢,流程如下: 1.從小明銀行卡取出5元,計算式money-5 2.把上面5塊錢打入小紅的賬號上,小紅收到5塊,

mysql批處理/觸發器/事務管理/存儲過程

查看 rop 插入 hms call 執行 查詢 mit 員工 mysql裏的批處理(sql語句) 格式: l mysql –u user –p < sql_file 表示從某個文件裏執行sql語句 l mysql –u user –p < sql_f

A query was run and no Result Maps were found for...原來是mapper.xml文件出了問題,是使用MyBatis最常見種錯誤

tor like .cn -1 es2017 batis pre XML apach 今天遇到一個問題,原來是mapper.xml文件出了問題,是使用MyBatis最常見的一種錯誤 報錯的結果是這樣的: A query was run and no Result Ma

MySQL用另張表的字段值Update本表

conn class tab highlight ble pre true field brush SQL示例: UPDATE TABLE1 a, TABLE2 b SET a.field1 = b. field1 [, a.field2 = b.field2, ...

mysql常見優化

sql 復制 緩存優化 blank depend 個數 用戶id 應該 lte 優化Group By語句 默認情況下,MySQL 排序所有GROUP BY col1,col2,....。查詢的方法如同在查詢中指定ORDER BY col1,col2,...。如果顯式包括一個