MYSQLDDL語(yǔ)句與DML在一個(gè)事物中的問題。-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),當(dāng)雄網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:當(dāng)雄等地區(qū)。當(dāng)雄做網(wǎng)站價(jià)格咨詢:18980820575>一個(gè)事物中包括 添加數(shù)據(jù)(DML) 和 建表(DDL) 兩個(gè)操作。當(dāng)添加數(shù)據(jù)完成的時(shí)候,DDL語(yǔ)句報(bào)錯(cuò),異常回滾。但是此時(shí)DML語(yǔ)句已經(jīng)執(zhí)行成功并提交。
疑惑DML語(yǔ)句為什么沒有回滾。
因?yàn)槭怯玫膆ibernate,所以開始懷疑hibernate的問題。后來細(xì)細(xì)研究了下,表示hibernate很無辜。
用MYSQL作了一些測(cè)試,如下:
set autocommit = 0;#開啟手動(dòng)提交事務(wù)
begin;#事物開始

INSERT INTO `employee` (`first_name`, `last_name`, `job_title`, `salary`) VALUES ('漢子', 'Gilbert', 'Software Architect', 8000);#向employee表添加數(shù)據(jù),此表數(shù)據(jù)庫(kù)中已存在的。

#重復(fù)創(chuàng)建employee表,此建表語(yǔ)句會(huì)報(bào)錯(cuò)
CREATE TABLE `employee` (
  `id`int NOT NULL AUTO_INCREMENT,
  `first_name`varchar(100) NOT NULL,
  `last_name`varchar(100) NOT NULL,
  `job_title`varchar(100) DEFAULT NULL,
  `salary`double DEFAULT NULL,
  `notes`text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ROLLBACK;#事物結(jié)束,回滾。
#為了更加明顯突出問題,此處我用回滾。其實(shí)在這里無論提交回滾。數(shù)據(jù)已經(jīng)添加成功
此時(shí)我懷疑DDL語(yǔ)句與DML語(yǔ)句不能處于同一事物,但是只是懷疑。
一系列查資料,但是并未出現(xiàn)一個(gè)明顯的答案。所以這個(gè)問題并未完全弄明白。也求大神解釋.....
但是,發(fā)現(xiàn)一個(gè)很重要的信息:
一些命令,當(dāng)開始一個(gè)事物,在執(zhí)行之前,MySQL會(huì)自動(dòng)提交事物。這些命令就是DDL。
從上面理解到,DDL命令會(huì)單獨(dú)開啟一個(gè)事物,并且會(huì)提交之前的事物。所以在我建表的時(shí)候,DDL命令已經(jīng)把我添加數(shù)據(jù)事物給提交了。
到我理解極限了,對(duì)mysql事物不太了解。

本文標(biāo)題:MYSQLDDL語(yǔ)句與DML在一個(gè)事物中的問題。-創(chuàng)新互聯(lián)
分享URL:http://muchs.cn/article40/dhgoho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站排名建站公司、域名注冊(cè)、標(biāo)簽優(yōu)化、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)