【问题标题】:INSERT unique value to MYSQL向 MYSQL 插入唯一值
【发布时间】:2011-10-30 12:49:33
【问题描述】:

我正在尝试向我的表中插入一个唯一值,但是在创建它之前我需要知道 ID。我知道AUTO_INCREMENT 可以解决这个问题,但这个字段不是AUTO_INCREMENTed

这是我的代码...

INSERT INTO networks 
    (NETWORK_ID, ADMIN_USER_ID, NETWORK_NAME, ADDRESS)
VALUES 
    ((SELECT MAX(NETWORK_ID)+1 FROM networks) , 3, 'Arcafe', 'habarzel 2 TA')

当我运行它时,我收到一条警告说我不能使用FROM 中的表,我猜是因为它指向自己。我怎样才能达到我所需要的?我可以将字段更改为AUTO_INCREMENT 字段吗?

【问题讨论】:

标签: mysql auto-increment


【解决方案1】:

您可以使用单独的表来生成唯一 ID 并使用此 ID

【讨论】:

  • MySQL 有 auto_increment 用于这个目的,一个单独的表是不必要的并且容易出错。
  • 这是一个有趣的想法!我想我可以使用一个单独的自动增量表,并使用该数字。不过,这将需要一个额外的 SELECT 。不过,我正在尝试像现在一样坚持使用纯 php/mysql。
【解决方案2】:
ALTER TABLE networks CHANGE NETWORK_ID NETWORK_ID int auto_increment 

Alter Table Manual

【讨论】:

  • 感谢关于 AUTO_INCREMENT 的 ALTER 建议。我正在寻找插入唯一 ID 的解决方案。
【解决方案3】:

通常在定义字段时将其设置为自动递增字段。之后,您可以使用:

ALTER TABLE networks MODIFY NETWORK_ID int(10) unsigned NOT NULL auto_increment;

然后插入一条新记录并让它自动获得分配的 ID,只需从插入中省略字段,例如。

INSERT INTO networks 
    (ADMIN_USER_ID, NETWORK_NAME, ADDRESS)
VALUES 
    (3, 'Arcafe', 'habarzel 2 TA')

【讨论】:

  • 感谢关于 AUTO_INCREMENT 的 ALTER 建议。我正在寻找插入唯一 ID 的解决方案。
  • 我继续使用 ALTER,证明是最好的主意。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-01-29
  • 2017-10-14
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多