2011-08-19 134 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