是否有一個select語句可以完成所有這三個操作:主鍵,唯一鍵和auto_increment?mysql:如何將列更改爲PK Auto_Increment
回答
這裏我們創建了一個小桌子:
mysql> CREATE TABLE test2 (id int);
注意空是YES,而id
是不是主鍵,也不會AUTO_INCREMENT。
mysql> DESCRIBE test2;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
這裏是alter命令:
mysql> ALTER TABLE test2 MODIFY COLUMN id INT NOT NULL auto_increment, ADD primary key (id);
現在空爲否,並且id
與AUTO_INCREMENT主鍵。
mysql> describe test2;
describe test2;
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
+-------+---------+------+-----+---------+----------------+
1 row in set (0.00 sec)
主鍵始終是唯一的。
主鍵始終是唯一的。
你應該知道你離開你的答案後問題完全顛倒了。 – tvanfosson 2010-05-27 16:33:59
@tvanfosson:thank you =) – newtover 2010-05-27 16:45:30
您不能使用SELECT
這樣的DML(數據操作語言)語句更改數據庫結構。您需要DDL(數據定義語言)語句。表列可以與ALTER TABLE
修改:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
的語法基本上是這樣的:
ALTER TABLE `foo`
CHANGE COLUMN `bar` `bar` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (`foo`);
當你想要做的確切變化,你必須知道,在關係數據庫中的主鍵是一個用於唯一標識表中每一行的值。如果它不是唯一的或NULL,它將不會達到這樣的目的。
- 1. Mysql - 將列改爲AUTO_INCREMENT
- 2. 將列更改爲Auto_Increment
- 3. 無法更改MySQL AUTO_INCREMENT
- 4. MySQL更新AUTO_INCREMENT PK以保留行排序
- 5. 如何將SQL中的主鍵更改爲auto_increment?
- 6. 錯誤改變MySQL的列AUTO_INCREMENT
- 7. Roo腳本 - 如何將pk名稱從「id」更改爲
- 8. MySQL的AUTO_INCREMENT列如何重置
- 9. Mysql-如何根據季度列將行更改爲列
- 10. 更新PK值mysql
- 11. INSERT更改auto_increment,但UPDATE不會更改auto_increment?
- 12. 如何將MySQL GROUP_CONCAT更改爲PostgreSQL string_agg?
- 13. 如何將mysql更改爲mysqli?
- 14. MySQL將列更改爲唯一
- 15. 將MySQL字段設置爲auto_increment
- 16. 如何從訪問表中更改PK?
- 17. mysql AUTO_INCREMENT如何工作?
- 18. 更新FK從PK使用PHP,MySQL的
- 19. MySQL:如何將varchar(255)UNIQUE列更改爲UNIQUE文本NOT NULL?
- 20. 如何將MySQL的列更改爲其他默認值?
- 21. 如何將行更改爲MySQL中的列
- 22. 如何在mysql中查找列是否爲auto_increment?
- 23. MySql無法創建列auto_increment
- 24. MySQL的AUTO_INCREMENT列創建
- 25. 如何將AUTO_INCREMENT添加到現有列?
- 26. MySQL在重複鍵更新PK AI
- 27. 如何將時間戳更改爲我在mysql中的時區?
- 28. JOOQ代碼生成器,H2 AUTO_INCREMENT PK與
- 29. 如何將LINQ列表更改爲arraylist
- 30. 如何將PG列更改爲NULLABLE TRUE?
你是指單個ALTER語句嗎?您實際上不使用SELECT語句來更改表結構。 – 2010-05-27 16:29:38
yes thast我的意思是 – 2010-05-27 16:29:58
當你在得到答案後完全顛倒了問題的含義時,它使得這些答案看起來非常愚蠢。如果您現在要求的是與您最初要求的相反的內容,我認爲您應該提出一個新問題。 – tvanfosson 2010-05-27 16:33:17