【问题标题】:Error while dropping a column删除列时出错
【发布时间】:2017-01-17 08:39:38
【问题描述】:

我刚刚在 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 列(使用标识)。所以,我试图删除列 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 失败 因为一个或多个对象访问此列。

请帮忙!!!

【问题讨论】:

  • 您好,这是因为您正在掺杂的列已在其他表格中引用。如果你真的想删除它,请先删除约束,然后删除列。
  • emp_id 是您在创建表查询primary key(emp_id) 中的主键,因此您应该在删除该列之前删除该主键约束
  • 谢谢 Yashveer ..我也做了同样的事,它奏效了..
  • 实际上有 43 个问题“ALTER TABLE DROP COLUMN failed because one or more objects access this column.”。

标签: sql sql-server


【解决方案1】:

这样的事情会有所帮助。

   ALTER TABLE Employee   
   DROP CONSTRAINT PK__Employee__1299A86183CA4FBC; 


   alter table Employee 
   drop column emp_id

【讨论】:

  • 所以想法是首先删除所有约束,如主键/ FK等,然后更改表
  • 注意:重新添加列时,您还需要重新添加 PK。
  • @CraigYoung :- 谢谢我错过通知,这将使答案更有用。
【解决方案2】:

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

CREATE TABLE 单词(_id,word,synonyms,favorite,history,updDate)

我想要下面的表格

CREATE TABLE words(_id,word,favorite,history,updDate)

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

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多