1

我目前有一个表,其中 id 列正在自动递增,然后有一个 tracking_code 列,它有一个唯一的约束。

目前,tracking_code 由注册人提供,但现在客户希望 tracking_code 自动生成但也可以更改。换句话说,在用户注册的地方,自动生成 tracking_code,但只要它保持唯一,就允许用户将该代码更新为其他任何内容。

是否可以在 MySQL 中执行类似的操作(将字符串附加到仅在插入记录后才存在的自动递增 id)或者在 mysql 中有另一种方法:

插入 mytable (..., tracking_code, ...) 值 (..., 'foo-' + id + '-bar', ...)

4

2 回答 2

2

您可以将跟踪 ID 设置为自动递增,它会根据您的需要工作。当您在插入期间未提供跟踪 ID 值时,将自动生成跟踪 ID,并且当您这样做时,将设置提供的值。只是不要忘记添加唯一约束。

于 2012-04-04T09:22:00.620 回答
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专栏时才有效。

于 2012-04-04T09:28:55.543 回答