程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 關於Msyql的事務

關於Msyql的事務

編輯:Delphi

  0. 參見 MySQLDocsmanual.Html

  1. 4.0以上mysqld都支持事務,包括非max版本。3.23的需要max版本MySQLd才能支持事務。

  2. 創建表時如果不指定type則默認為myisam,不支持事務。
    可以用 show create table tablename 命令看表的類型。

  2.1 對不支持事務的表做start/commit操作沒有任何效果,在執行commit前已經提交,測試:
  執行一個msyql:
  use test;
  drop table if exists tn;
  create table tn (a varchar(10)) type=myisam;
  drop table if exists ty;
  create table ty (a varchar(10)) type=innodb;

  begin;
  insert into tn values('a');
  insert into ty values('a');
  select * from tn;
  select * from ty;
  都能看到一條記錄

  執行另一個MySQL:
  use test;
  select * from tn;
  select * from ty;
  只有tn能看到一條記錄
  然後在另一邊
  commit;
  才都能看到記錄。

  3. 可以執行以下命令來切換非事務表到事務(數據不會丟失),innodb表比myisam表更安全:
     alter table tablename type=innodb;

  3.1 innodb表不能用repair table命令和myisamchk -r table_name
   但可以用check table,以及MySQLcheck [OPTIONS] database [tables]

  4. 啟動MySQL數據庫的命令行中添加了以下參數可以使新發布的MySQL數據表都默認為使用事務(
    只影響到create語句。)
  --default-table-type=InnoDB

  測試命令:
  use test;
  drop table if exists tn;
  create table tn (a varchar(10));
  show create table tn;

  5. 臨時改變默認表類型可以用:
  set table_type=InnoDB;
  show variables like 'table_type';
  或:
  c:mysqlinMySQLd-max-nt --standalone --default-table-type=InnoDB

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved