我目前有一个带有自动增量的id列的表,然后有一个对其有唯一约束的tracking_code列。
目前,tracking_code由注册人提供,但现在客户希望自动生成tracking_code,但也可以更改。 换句话说,在用户注册的地方,自动生成tracking_code,但允许用户将该代码更新为其他任何内容,只要它保持唯一。
是否可以在MySQL中执行类似的操作(将字符串附加到仅在插入记录后存在的自动增量id)或者是否有另一种方法在mysql中执行此操作:
INSERT INTO mytable(...,tracking_code,...)VALUES(...,'foo-'+ id +' - bar',...)
答案 0 :(得分:2)
您可以将跟踪ID设置为自动递增,并且可以根据需要使用。如果在插入期间未提供跟踪ID的值,则会自动生成跟踪ID,并且当您执行时,将设置提供的值。只是不要忘记添加唯一约束。
答案 1 :(得分:1)
你可以这样做:
INSERT INTO mytable
(..., tracking_code, ...)
VALUES (
...,
CONCAT(
'foo-',
(
SELECT
AUTO_INCREMENT
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = 'database'
AND TABLE_NAME = 'mytable'
),
'-bar'
),
...
)
或者
INSERT INTO mytable
SET tracking_code = CONCAT(
'foo-',
(
SELECT
AUTO_INCREMENT
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = 'database'
AND TABLE_NAME = 'mytable'
),
'-bar'
),
...
显然只有AUTO_INCREMENT
列才有效。