13

更改表tada_prodaction_6_weekly 添加 COLUMN idINT NULL AUTO_INCREMENT UNIQUE AFTER member_id;

作品,

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

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

但我得到一个语法错误,正确的语法是什么?

4

4 回答 4

23
ALTER TABLE `tada_prod`.`action_6_weekly`
ADD COLUMN `id` INT NULL AUTO_INCREMENT UNIQUE FIRST;
于 2010-08-04T03:14:28.017 回答
10

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

于 2014-01-10T08:32:32.063 回答
1

实际上,

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

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

“错误 1064:您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 1 行的 'before specific_column_name' 附近使用”消息。

你可以试试:

ALTER TABLE table_name ADD column_name VARCHAR(12) NOT NULL FIRST;
于 2014-04-19T10:19:18.840 回答
0

扩展@php答案,我认为不包括BEFORE背后的基本原理是因为BEFORE使用AFTERFIRST

例如:

假设,最初您有一个关系模式,例如

+----------------------+
| name | age | address |
+----------------------+ 

然后由于某种原因,您不得不在之前添加一个新列dob(出生日期)age,但是由于BEFORE不允许,您可以做的是在usingdob之后插入并很好地达到相同的效果。nameAFTER

+----------------------------+
| name | dob | age | address |
+----------------------------+ 

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

由于没有列之前name我们不能AFTER用来放置id列。为了解决这个问题,语言设计者引入FIRST了将所需id列作为表格的第一列。

+---------------------------------+
| id | name | dob | age | address |
+---------------------------------+ 

虽然我个人认为AFTER并且BEFORE会做出更直观的一对。

于 2021-04-27T04:28:27.273 回答