Mysql 为什么LAST_INSERT_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

我正在使用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;

我的语法是否有问题,或者这是一个常见问题?有解决办法吗?

你用错了

从文档中:

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表中插入任何数据。