ALTER TABLE tada_prod
。action_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`;
但是我收到语法错误, 什么是正确的语法?
答案 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>AFTER
和 FIRST
例如:
比方说,最初你有一个像
这样的关系模式+----------------------+
| name | age | address |
+----------------------+
然后由于某种原因,您不得不在 dob
之前添加一个新列 age
(date ofbirth),但由于 {{1 }} 是不允许的,您可以做的是使用 BEFORE
在 dob
之后插入 name
并很好地达到相同的效果.
AFTER
<块引用>
由于在 +----------------------------+
| name | dob | age | address |
+----------------------------+
之前没有列,我们不能使用 name
来放置 AFTER
列。为了解决这个问题,语言设计者引入了 id
,它使所需的 FIRST
列作为表的第一列。
id
虽然我个人认为 +---------------------------------+
| id | name | dob | age | address |
+---------------------------------+
和 AFTER
会形成更直观的组合。