Php 获取当前自动增量值
我正在使用php为我的表执行mysql插入。 自动增量列名是链接id 别名colum用于创建SEO友好的url 在插入过程中,我希望在别名列的末尾附加link_id值 所以我需要知道被插入的链接id值是多少 我不想做另一个查询 mysql\u insert\u id不起作用,因为它使用的是上一个查询,而不是当前查询Php 获取当前自动增量值,php,mysql,auto-increment,Php,Mysql,Auto Increment,我正在使用php为我的表执行mysql插入。 自动增量列名是链接id 别名colum用于创建SEO友好的url 在插入过程中,我希望在别名列的末尾附加link_id值 所以我需要知道被插入的链接id值是多少 我不想做另一个查询 mysql\u insert\u id不起作用,因为它使用的是上一个查询,而不是当前查询 谢谢您可以使用mysql\u insert\u id++,尽管这并不总是可靠的 更好的方法是插入查询,然后使用CONCAT追加当前id。您可以使用mysql\u insert\u i
谢谢您可以使用mysql\u insert\u id++,尽管这并不总是可靠的
更好的方法是插入查询,然后使用CONCAT追加当前id。您可以使用mysql\u insert\u id++,尽管这并不总是可靠的 最好是插入查询,然后使用CONCAT追加当前id。您应该使用SHOW TABLE STATUS: 它将为您提供自动增量列的当前状态 编辑: 在一个查询中,您可以这样做:
INSERT INTO table_schema.table_name(column_name)
VALUES (("SELECT AUTO_INCREMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'table_schema'
AND TABLE_NAME = 'table_name'"))
它将在列名称中为您提供新的自动增量值。您应该使用“显示表格状态”:
它将为您提供自动增量列的当前状态
编辑:
在一个查询中,您可以这样做:
INSERT INTO table_schema.table_name(column_name)
VALUES (("SELECT AUTO_INCREMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'table_schema'
AND TABLE_NAME = 'table_name'"))
它将在列名称中为您提供新的自动增量值。您考虑过一个吗?比如:
DELIMITER //
CREATE TRIGGER `add_alias_id` AFTER INSERT ON `someTable`
FOR EACH ROW BEGIN
UPDATE
`someTable`
SET
`alias` = CONCAT(`alias`,NEW.`link_id`)
WHERE
`link_id` = NEW.`link_id`;
END;
//
DELIMITER ;
编辑:我最近在一家公司工作,该公司的旗舰软件过去假定maxid+1=下一个id。问题是并发性;这很少见,但两个人可以得到相同的身份证,造成各种混乱。在预测价值时要格外小心。你考虑过一个新的方法吗?比如:
DELIMITER //
CREATE TRIGGER `add_alias_id` AFTER INSERT ON `someTable`
FOR EACH ROW BEGIN
UPDATE
`someTable`
SET
`alias` = CONCAT(`alias`,NEW.`link_id`)
WHERE
`link_id` = NEW.`link_id`;
END;
//
DELIMITER ;
编辑:我最近在一家公司工作,该公司的旗舰软件过去假定maxid+1=下一个id。问题是并发性;这很少见,但两个人可以得到相同的身份证,造成各种混乱。在预测价值时要格外小心。我在选择端处理这种情况 例如: 在tablenamealiasroot值中插入'index.php?link_id=' 这会给你举个例子
在我的select中,我将执行“select concataliasroot,link_id as alias from tablename”我在select端处理这种类型的场景 例如: 在tablenamealiasroot值中插入'index.php?link_id=' 这会给你举个例子
在我的选择中,我会选择“select concataliasroot,link\u id as alias from tablename”mysql\u insert\u id++将不起作用,因为mysql\u insert\u id是特定于连接的。安全的假设是此表只发生一次插入。mysql\U insert\U id++将无法工作,因为mysql\U insert\U id是特定于连接的。这是一个安全的假设,该表只发生一次插入。您对$next_id的假设容易受到竞争条件的影响,正如Derelease所指出的。您对$next_id的假设容易受到竞争条件的影响,正如Derelease所指出的。这是最好的方法。尽管我会在PHP端进行串联,让mysql少忙一点。我更喜欢这个解决方案,因为你不需要复制数据,也不需要在数据库中保留用于表示的格式。这是最好的方法。虽然我会在PHP端进行连接,让mysql少忙一点。我更喜欢这个解决方案,因为您不需要复制数据,也不需要在数据库中设置演示文稿使用的格式。