MySQL是目前最為流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,其在企業(yè)級應用領(lǐng)域具有較強的應用價值。其中,insert語句經(jīng)常被用于向表中添加新的記錄。在進行insert操作時,MySQL將返回一個表示執(zhí)行結(jié)果的值。
這個返回值提供了諸如已插入行數(shù)、主鍵值等有用信息,方便我們進行后續(xù)操作。
INSERT INTO tb_name (col1,col2,col3,...) VALUES (value1,value2,value3,...);
如上述SQL語句所示,我們可以通過插入的具體值來執(zhí)行INSERT語句,同時MySQL返回的結(jié)果值與插入的具體值有關(guān)。下面,我們將根據(jù)插入數(shù)據(jù)的不同情形來具體探討MySQL INSERT語句的返回值。
如果我們在INSERT語句中使用“VALUES”子句,可以利用INSERT語句的返回值來檢測插入的文本數(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 | +------------------+
此時,MySQL返回的值為1,表示插入操作執(zhí)行成功,并且新行的主鍵為1。同樣的,如果我們想在一個事務(wù)中插入數(shù)據(jù),那么可以使用LAST_INSERT_ID()函數(shù)獲取主鍵值。
如果我們在INSERT語句中使用“SELECT”子句,那么MySQL INSERT語句的返回值將是滿足該SELECT語句的行數(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
在這個例子中,MySQL將選擇ID為4的客戶的first_name和last_name值,將其插入到employees表中,并返回該操作影響的行數(shù)。此時,MySQL返回值為1。我們可以利用這個返回值來獲知INSERT操作是否成功。
如果我們在INSERT語句中使用“SET”子句,那么MySQL INSERT語句的返回值將是1,表示插入操作成功。同時,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語句的返回值不僅提供INSERT操作結(jié)果的相關(guān)信息,而且可以方便我們進行后續(xù)的操作。對于以此為基礎(chǔ)的企業(yè)應用,判斷MySQL插入操作的返回值是十分必要的。