Mysql 为什么LAST_INSERT_ID()返回外键
我正在使用mysql数据库。当我在数据库中添加一些示例数据时,我希望返回最后一个插入id,如下所示:Mysql 为什么LAST_INSERT_ID()返回外键,mysql,Mysql,我正在使用mysql数据库。当我在数据库中添加一些示例数据时,我希望返回最后一个插入id,如下所示: SELECT DISTINCT LAST_INSERT_ID() FROM facturatiedatabase.tblinvoice; 它返回customersID 这是我正在用的桌子 CREATE TABLE tblInvoice ( invoiceID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, cust
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;
我的语法是否有问题,或者这是一个常见问题?有解决办法吗?你用错了 从文档中: LAST_INSERT_ID()(不带参数)返回一个BIGINT(64位)值 表示为设置的第一个自动生成的值 由最近执行的INSERT自动递增的列 影响这样一列的语句。例如,在插入一行之后 这将生成一个自动增量值,您可以得到如下值 这: 请注意,该示例不查询表。它基于当前连接
mysql> SELECT LAST_INSERT_ID();
-> 195
如果您插入到tblInvoice
中,然后运行选择最后一次插入\u ID()
您将获得发票ID
因此,一个有效的例子是:
INSERT INTO tblInvoice (columns) VALUES (data);
SELECT LAST_INSERT_ID(); -- The invoiceID generated from above insert
如果您真正想要的是上次创建的发票ID,请尝试:
SELECT MAX(invoiceID) FROM tblInvoice
不完美,但应该足以满足您的需要。您是否也在向customer表中插入数据?不,我不在customer表中插入任何数据。