删除列时出错

时间:2017-01-17 08:39:39

标签: sql sql-server

我刚刚在MS SQL中创建了一个表

create table Employee 
(emp_id smallint not null,
employee_name varchar (30) not null,
salary money not null,
department varchar(30),
address varchar(40),
primary key(emp_id)
)

创建表后,我想自动填充emp_id列(使用Identity)。所以,我试图删除列emp_id如下:

alter table Employee 
drop column emp_id

尽管如此,我还没有在表格中插入任何行,我收​​到了错误

  

消息5074,等级16,状态1,行1对象   ' PK__Employee__1299A86183CA4FBC'取决于专栏' emp_id'。消息   4922,级别16,状态9,第1行ALTER TABLE DROP COLUMN emp_id失败   因为一个或多个对象访问此列。

请帮助!!!

2 个答案:

答案 0 :(得分:2)

这样的事情会有所帮助。

   ALTER TABLE Employee   
   DROP CONSTRAINT PK__Employee__1299A86183CA4FBC; 


   alter table Employee 
   drop column emp_id

答案 1 :(得分:0)

我通过执行以下查询解决了该问题:我需要删除一列,然后从该列中删除所有条目以释放数据库大小,我的初始表结构如下所示:

创建表格中的单词(_id,单词,同义词,收藏夹,历史记录,updDate)

我想要表格如下

创建表格中的单词(_id,单词,收藏夹,历史记录,更新日期)

所以我在下面的查询中执行,并删除了“同义词”列

BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(_id,word,favorite,history,updDate);
INSERT INTO t1_backup SELECT _id,word,favorite,history,updDate FROM words;
DROP TABLE words;
CREATE TABLE words(_id,word,favorite,history,updDate);
INSERT INTO words SELECT _id,word,favorite,history,updDate FROM t1_backup;
DROP TABLE t1_backup
COMMIT;