删除Sybase ASE表中的列

时间:2015-08-18 14:00:21

标签: sql tsql sybase sybase-ase

如何在Sybase ASE 15表设置中删除列。

我尝试了一些,但无济于事:

alter table my_table
drop column1, column2

除了查看Sybase documentation之外,它还没有解决我的问题。

  

选择'数据库选项未启用数据库   ' MY_DB&#39 ;.无法完成具有数据复制的ALTER TABLE。设置'选择   成'数据库选项并重新运行。

5 个答案:

答案 0 :(得分:4)

由于数据库上的select into选项已关闭,您可以使用

选择select into选项中的两个选项
sp_dboption my_db, "select into", true

OR

alter table drop column的no datacopy参数允许您在不执行数据复制的情况下从表中删除列,并减少alter table drop column运行所需的时间。

SYBASE Documentation - Dropping Columns from a Table Without Performing a Data Copy

ALTER TABLE my_table
DROP column1, column2
WITH no datacopy

答案 1 :(得分:2)

只想和你分享我刚才有类似的问题,在我的情况下,我必须在每个列名之前添加“drop”。代码如下所示:

alter table dba.ABC
drop column1,
drop column2,
drop column3

commit;

我在一些不太灵活的旧版sybase上工作。 干杯

答案 2 :(得分:1)

您忘记在查询中使用关键字“COLUMN”。使用以下语法: -

ALTER TABLE my_table
DROP COLUMN column1, column2

答案 3 :(得分:1)

有趣的是,必须打开“select into”这一事实意味着Sybase服务器在内部将数据从旧表复制到表的新副本,而不使用事务日志(或仅使用事务日志)记录页面的分配,而不是页面内的数据变化)。 IE浏览器。有点像批量复制。我想知道这是否会导致复制问题?

另外,为了完整起见,从15.7.1版开始,“无数据复制”功能是新功能。

答案 4 :(得分:0)

我找到了解决方案。我的新测试数据库已经选择了'关闭选项,意味着删除/更改表格被拒绝。

sp_dboption my_db, "select into", true

现在看起来很明显,我知道选项是什么。