alter table add ...在`code`之前?

时间:2010-08-04 03:11:34

标签: mysql alter-table

ALTER TABLE tada_prodaction_6_weekly ADD COLUMN id INT {NULL} AUTO_INCREMENT member_id之后的唯一

作品,

所以我想,将列添加为我可以做的第一列

ALTER TABLE `tada_prod`.`action_6_weekly`     ADD COLUMN `id` INT NULL AUTO_INCREMENT UNIQUE BEFORE `code`;

但是我收到语法错误, 什么是正确的语法?

4 个答案:

答案 0 :(得分:21)

ALTER TABLE `tada_prod`.`action_6_weekly`
ADD COLUMN `id` INT NULL AUTO_INCREMENT UNIQUE FIRST;

答案 1 :(得分:7)

您只能在特定字段之后添加列,或者首先不在之前添加列。 特定字段后添加列的mysql查询是:
ALTER TABLE table_name ADD COLUMN column_name VARCHAR(30) AFTER column_name

答案 2 :(得分:1)

实际上,

alter table table_name ADD column_name VARCHAR(12) NOT NULL BEFORE specific_column_name;

mySQL语法中不允许使用此命令。如果你使用它,我想你会得到

  

"错误1064:您的SQL语法中有错误;检查   手册,对应右边的MySQL服务器版本   在specific_column_name'之前使用的语法。在第1行"消息。

您可以尝试:

ALTER TABLE table_name ADD column_name VARCHAR(12) NOT NULL FIRST;

答案 3 :(得分:0)

扩展 @php 答案,我认为不包括 BEFORE 的理由是因为 BEFORE 的所有效果都可以使用 < strong>AFTERFIRST

例如:

比方说,最初你有一个像

这样的关系模式
+----------------------+
| name | age | address |
+----------------------+ 

然后由于某种原因,您不得不在 dob 之前添加一个新列 age(date ofbirth),但由于 {{1 }} 是不允许的,您可以做的是使用 BEFOREdob 之后插入 name 并很好地达到相同的效果.

AFTER
<块引用>

但是如果你想在 `name` 之前插入一个新的列 `id` 怎么办?

由于在 +----------------------------+ | name | dob | age | address | +----------------------------+ 之前没有列,我们不能使用 name 来放置 AFTER 列。为了解决这个问题,语言设计者引入了 id,它使所需的 FIRST 列作为表的第一列。

id

虽然我个人认为 +---------------------------------+ | id | name | dob | age | address | +---------------------------------+ AFTER 会形成更直观的组合。

相关问题