我嘗試以下,但我得到了一個語法錯誤你如何添加和刪除列在一個單一的ALTER TABLE
ALTER TABLE Grades (
DROP COLUMN (Student_FamilyName, Student_Name),
ADD Student_id INT);
是否有可能進行DROP
並在同ALTER TABLE
聲明的ADD
?
我嘗試以下,但我得到了一個語法錯誤你如何添加和刪除列在一個單一的ALTER TABLE
ALTER TABLE Grades (
DROP COLUMN (Student_FamilyName, Student_Name),
ADD Student_id INT);
是否有可能進行DROP
並在同ALTER TABLE
聲明的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 Syntax Conventions (Transact-SQL)的| (豎線)
分隔括號或大括號中的語法項目。您只能使用其中一個項目。
所以你不能在一個語句中修改,刪除或添加。你也有parens和逗號不起作用。所以,你需要
ALTER TABLE Grades DROP COLUMN (Student_FamilyName, Student_Name);
ALTER TABLE Grades ADD Student_id INT;
如果你需要他們,你只需要在交易
「_If你需要它們是一個原子操作,你只需要在transaction_中包裝」 - Oracle DDL是否會導致隱含的提交? – Sepster
或如在T-SQL中: ALTER TABLE Grades DROP COLUMN Student_FamilyName,COLUMN Student_Name; –
如果你的數據庫是MySQL來包裝一個原子操作,你能做到這樣
ALTER TABLE Grades
DROP COLUMN Student_FamilyName,
DROP COLUMN Student_Name,
ADD Student_id INT
作品在MySQL 5.5.5
你不能做降和一個ALTER語句創建,分開吧 –
您切換到PostgreSQL(咳嗽),支持[多變化(HTTP://www.postgresql。要麼g/docs/currrent/static/sql-altertable.html)作爲標準SQL語法的擴展。 (但是,即使我使用PostgreSQL很多,我通常會*編寫SQL來避免擴展。) –
您正在使用哪些DBMS?甲骨文? DB2? –