亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

在數(shù)據(jù)庫(kù)事務(wù)中更新多個(gè)表數(shù)據(jù)時(shí),某些表不支持事務(wù)會(huì)發(fā)生什么?

kyanag / 1813人閱讀

摘要:最后的執(zhí)行結(jié)果,由于表使用了不支持事務(wù)的引擎,所以,上述語(yǔ)句對(duì)表數(shù)據(jù)的操作被真正的執(zhí)行了,也就是說(shuō),表中第一條數(shù)據(jù)中小明的公司地址被改成了小明的第二家公司地址,而其它兩個(gè)表的數(shù)據(jù)沒(méi)有發(fā)生任何變化。

作者:Terry Gao

首先,我只在Mysql中做了測(cè)試,其它數(shù)據(jù)庫(kù)各位讀者如果有興趣可以自己試試。

1. 創(chuàng)建測(cè)試數(shù)據(jù)

首先新建三張表:user、company、school。我們知道InnoDB引擎是支持事務(wù)的,而MyISAM引擎不支持事務(wù),因此,在這里,我使用InnoDB作為user和school兩個(gè)表的引擎,而使用MyISAM作為company的引擎。三個(gè)表結(jié)構(gòu)很簡(jiǎn)單,數(shù)據(jù)類型什么的我就不放出來(lái)了,把表數(shù)據(jù)列在下面。

user表(InnoDB):

id name age
1 小明 18
2 小李 19
3 小張 20

company表(MyISAM):

id name age
1 小明的公司 小明的公司地址
2 小李的公司 小李的公司地址
3 小張的公司 小張的公司地址

school表(InnoDB):

id name age
1 小明的學(xué)校 小明的學(xué)校地址
2 小李的學(xué)校 小李的學(xué)校地址
3 小張的學(xué)校 小張的學(xué)校地址
2. 執(zhí)行sql

我們執(zhí)行如下sql:

BEGIN;
UPDATE user set age = "22" where id = 1;
UPDATE company set address = "小明的第二家公司地址" where id = 1;
UPDATE school set address = "小明的中學(xué)地址" where id = 1;
ROLLBACK;

上面的sql首先通過(guò)BEGIN啟動(dòng)一個(gè)事務(wù),然后將user表中id為1的數(shù)據(jù)中age字段的值改為22,再將company表中id為1的數(shù)據(jù)中address字段的值改為‘小明的第二家公司’,第三條語(yǔ)句是將school表中id為1的數(shù)據(jù)中address字段的值改為‘小明的中學(xué)地址’,最后我們并不執(zhí)行COMMIT來(lái)保存更改,而是使用ROLLBACK來(lái)回滾操作,看看是否都能正確回滾。

最后的執(zhí)行結(jié)果,由于company表使用了不支持事務(wù)的MyISAM引擎,所以,上述語(yǔ)句對(duì)company表數(shù)據(jù)的操作被真正的執(zhí)行了,也就是說(shuō),company表中第一條數(shù)據(jù)中“小明的公司地址”被改成了“小明的第二家公司地址”,而其它兩個(gè)表的數(shù)據(jù)沒(méi)有發(fā)生任何變化。

3. 總結(jié)

我們?cè)谄綍r(shí)的工作中,如果涉及到數(shù)據(jù)庫(kù)事務(wù)操作,一定要對(duì)庫(kù)和表的性質(zhì)特性了解清楚,以防一些不支持事務(wù)的庫(kù)和表,影響了事務(wù)操作的原子性。

如果你有任何問(wèn)題或建議,可以掃描下方二維碼或者微信搜索[phpjiagoushier],關(guān)注我的微信公眾號(hào)[PHP架構(gòu)],與我交流互動(dòng)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/17599.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<