![](/img/trans.png)
[英]How to DROP multiple columns with a single ALTER TABLE statement in SQL Server?
[英]How do you ADD and DROP columns in a single ALTER TABLE
我尝试了以下但出现语法错误
ALTER TABLE Grades (
DROP COLUMN (Student_FamilyName, Student_Name),
ADD Student_id INT );
是否可以在同一个ALTER TABLE
语句中执行DROP
和ADD
?
如果你看一下ALTER TABLE SYTAX
你会看到这个
ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name
{
ALTER COLUMN column_name
{
[ type_schema_name. ] type_name [ ( { precision [ , scale ]
| max | xml_schema_collection } ) ]
[ COLLATE collation_name ]
[ NULL | NOT NULL ] [ SPARSE ]
| {ADD | DROP }
{ ROWGUIDCOL | PERSISTED | NOT FOR REPLICATION | SPARSE }
}
| [ WITH { CHECK | NOCHECK } ]
| ADD
{
<column_definition>
| <computed_column_definition>
| <table_constraint>
| <column_set_definition>
} [ ,...n ]
| DROP
{
[ CONSTRAINT ]
{
constraint_name
[ WITH
( <drop_clustered_constraint_option> [ ,...n ] )
]
} [ ,...n ]
| COLUMN
{
column_name
} [ ,...n ]
} [ ,...n ]
这可以减少到
ALTER TABLE { ALTER COLUMN column_name | ADD | DROP }
根据Transact-SQL 语法约定 (Transact-SQL) | (竖条)
分隔括在方括号或大括号中的语法项。 您只能使用其中一项。
因此,您不能在单个语句中更改、删除或添加。 您还有无法使用的括号和逗号。 所以你需要
ALTER TABLE Grades DROP COLUMN (Student_FamilyName, Student_Name);
ALTER TABLE Grades ADD Student_id INT;
如果你需要它们是一个原子动作,你只需要包装在事务中
如果你的数据库是 MySQL,你可以这样做:
ALTER TABLE Grades
DROP COLUMN Student_FamilyName,
DROP COLUMN Student_Name,
ADD Student_id INT;
适用于MySQL 5.5.5
你可以使用这个:
ALTER TABLE Grades
DROP Student_FamilyName,
DROP Student_Name,
ADD Student_id INT;
你可以像这样使用之前/之后:
ALTER TABLE Grades
DROP Student_FamilyName,
DROP Student_Name,
ADD Student_id INT AFTER id;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.