私は以下を試しましたが、構文エラーが発生しました
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) によると| (縦棒)
大括弧または中括弧で囲まれた構文項目を区切ります。使用できるアイテムは1つだけです。
したがって、単一のステートメントで変更、削除、または追加することはできません。機能しないかっことカンマもあります。だからあなたは必要になります
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で動作します