我正在使用mysql数据库。当我想在我的数据库中添加一些示例数据时,我想返回最后一个插入ID,如下所示:
SELECT DISTINCT LAST_INSERT_ID() FROM facturatiedatabase.tblinvoice;
它返回customersID。
这张桌子我正在使用。
CREATE TABLE tblInvoice (
invoiceID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
customerID INT,
totalPriceExcl decimal(65,2),
vat decimal(65,2),
totalPriceIncl decimal(65,2),
conditionState VARCHAR(100) NOT NULL DEFAULT 'In progress' ,
createDate Date,
invoiceNumber int ,
CONSTRAINT FK_customerID_Invoice FOREIGN KEY (customerID) REFERENCES tblCustomers(customerID)
)ENGINE=InnoDB;
我的语法有问题或这是一个常见问题吗?是否有解决方法?
答案 0 :(得分:1)
你错误地使用它。
来自文档:
LAST_INSERT_ID()(不带参数)返回BIGINT(64位)值 表示为其设置的第一个自动生成的值 最近执行的INSERT的AUTO_INCREMENT列 声明影响这样一个专栏。例如,插入一行后 生成一个AUTO_INCREMENT值,你可以得到像这样的值 这样:
请注意,该示例不查询表。它基于当前的连接。
mysql> SELECT LAST_INSERT_ID();
-> 195
如果您插入tblInvoice
然后运行SELECT LAST_INSERT_ID()
,您将获得invoiceID
。
所以一个有效的例子是:
INSERT INTO tblInvoice (columns) VALUES (data);
SELECT LAST_INSERT_ID(); -- The invoiceID generated from above insert
如果您真正想要的是上次创建的发票ID,请尝试:
SELECT MAX(invoiceID) FROM tblInvoice
不完美,但应该足以满足您的需求。