MYSQL:存储过程,插入一行,然后通过LAST_insert_ID()选择它
我正在尝试进行存储过程调用AddCluster witch正在获取参数“title”和“alt” 案例1: 如果数据库中有“title”,则只返回“old”行 案例2: 如果“标题”不在db中,则 在参数“title”和“alt”上插入一行 然后通过LAST_INSERT_ID()选择新添加的行 问题出在案例2中,它只返回空的MYSQL:存储过程,插入一行,然后通过LAST_insert_ID()选择它,mysql,stored-procedures,last-insert-id,Mysql,Stored Procedures,Last Insert Id,我正在尝试进行存储过程调用AddCluster witch正在获取参数“title”和“alt” 案例1: 如果数据库中有“title”,则只返回“old”行 案例2: 如果“标题”不在db中,则 在参数“title”和“alt”上插入一行 然后通过LAST_INSERT_ID()选择新添加的行 问题出在案例2中,它只返回空的 尝试在不指定id的情况下插入: ... ELSE INSERT INTO Cluster ( `create_at`, `
尝试在不指定id的情况下插入:
...
ELSE
INSERT INTO Cluster
(
`create_at`,
`title`,
`alt`
)
VALUES
(
NOW(),
in_title,
in_alt
);
/* returns the newly added Cluster */
...
确保Cluster.id
是一个AUTO\u INCREMENT
列,只有这样,您才能通过LAST\u INSERT\u id()
获得值,只需稍加更新即可。
我发现了错误。。这是count(*)
应该是这样的:
SELECT * FROM Cluster WHERE title=in_title
请参阅孔更新存储过程只需在不指定id的情况下进行尝试。。。AUTO_INCREMENT处于启用状态,但运气不佳:(如果从命令行运行INSERT和SELECT查询,它是否按预期工作?我使用的是MySQL Workbench,但从SQL编辑器中可以对“Cluster”表执行INSERT和SELECT查询…我可以调用ADDCUSTER(),它会在案例1中返回一行,但在案例2中不会返回。。
SELECT count(*) FROM Cluster WHERE title=in_title
SELECT * FROM Cluster WHERE title=in_title