MySQL是目前最為流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,其在企業(yè)級(jí)應(yīng)用領(lǐng)域具有較強(qiáng)的應(yīng)用價(jià)值。其中,insert語(yǔ)句經(jīng)常被用于向表中添加新的記錄。在進(jìn)行insert操作時(shí),MySQL將返回一個(gè)表示執(zhí)行結(jié)果的值。
這個(gè)返回值提供了諸如已插入行數(shù)、主鍵值等有用信息,方便我們進(jìn)行后續(xù)操作。
INSERT INTO tb_name (col1,col2,col3,...) VALUES (value1,value2,value3,...);
如上述SQL語(yǔ)句所示,我們可以通過(guò)插入的具體值來(lái)執(zhí)行INSERT語(yǔ)句,同時(shí)MySQL返回的結(jié)果值與插入的具體值有關(guān)。下面,我們將根據(jù)插入數(shù)據(jù)的不同情形來(lái)具體探討MySQL INSERT語(yǔ)句的返回值。
如果我們?cè)贗NSERT語(yǔ)句中使用“VALUES”子句,可以利用INSERT語(yǔ)句的返回值來(lái)檢測(cè)插入的文本數(shù)據(jù)。在這種情況下,返回的值通常是插入記錄的主鍵。
mysql>INSERT INTO employees (first_name, last_name) VALUES ('John', 'Doe'); Query OK, 1 row affected (0.02 sec) mysql>SELECT LAST_INSERT_ID(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 1 | +------------------+
此時(shí),MySQL返回的值為1,表示插入操作執(zhí)行成功,并且新行的主鍵為1。同樣的,如果我們想在一個(gè)事務(wù)中插入數(shù)據(jù),那么可以使用LAST_INSERT_ID()函數(shù)獲取主鍵值。
如果我們?cè)贗NSERT語(yǔ)句中使用“SELECT”子句,那么MySQL INSERT語(yǔ)句的返回值將是滿(mǎn)足該SELECT語(yǔ)句的行數(shù),其中包括插入的新行。
mysql>INSERT INTO employees (first_name, last_name) ->SELECT first_name, last_name FROM customers WHERE customer_id = 4; Query OK, 1 row affected (0.02 sec) Records: 1 Duplicates: 0 Warnings: 0
在這個(gè)例子中,MySQL將選擇ID為4的客戶(hù)的first_name和last_name值,將其插入到employees表中,并返回該操作影響的行數(shù)。此時(shí),MySQL返回值為1。我們可以利用這個(gè)返回值來(lái)獲知INSERT操作是否成功。
如果我們?cè)贗NSERT語(yǔ)句中使用“SET”子句,那么MySQL INSERT語(yǔ)句的返回值將是1,表示插入操作成功。同時(shí),MySQL也將返回插入的行數(shù),如果插入失敗,則返回0。
mysql>INSERT INTO employees SET first_name = 'John', last_name = 'Doe'; Query OK, 1 row affected (0.01 sec)
由于使用的是SET子句,因此MySQL返回值恒為1。如果我們插入多行數(shù)據(jù),則返回值為插入成功的行數(shù)。
總之,MySQL INSERT語(yǔ)句的返回值不僅提供INSERT操作結(jié)果的相關(guān)信息,而且可以方便我們進(jìn)行后續(xù)的操作。對(duì)于以此為基礎(chǔ)的企業(yè)應(yīng)用,判斷MySQL插入操作的返回值是十分必要的。