2011-08-19 107 views
-1

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

这是我的代码...

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字段吗?

+0

此链接将帮助您 http://stackoverflow.com/questions/1467581/how-to-generate-unique-id-in-mysql –

+0

为什么你不希望使用AUTO_INCREMENT? –

回答

4

通常你设置字段是定义时自动增量字段。要做到这一点之后,你可以使用:

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

到要插入的EW记录,并且它可以自动获得分配的ID,只是省略从插入域,例如。

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

感谢您对AUTO_INCREMENT的ALTER建议。 我正在寻找解决方案插入一个唯一的ID。 – Ted

+0

我继续使用ALTER,证明是最好的主意。谢谢 ! – Ted

1

您可以使用单独的表生成唯一的ID,用这个ID的

+0

MySQL为此具有auto_increment,单独的表是不必要的并且容易出错。 –

+0

这是一个有趣的想法!我想我可以使用一个独立的表,它是auto_incremented,并使用该数字。这将需要额外的SELECT。我试图坚持纯粹的PHP/MySQL,因为它是现在。 – Ted

1
ALTER TABLE networks CHANGE NETWORK_ID NETWORK_ID int auto_increment 

Alter Table Manual

+0

这将返回一个错误。 '未知列'ID'...' –

+0

a'r fixed filedname – RiaD

+0

感谢您对AUTO_INCREMENT的ALTER建议。 我正在寻找解决方案插入一个唯一的ID。 – Ted