如何在Sybase ASE 15表设置中删除列。
我尝试了一些,但无济于事:
alter table my_table
drop column1, column2
除了查看Sybase documentation之外,它还没有解决我的问题。
选择'数据库选项未启用数据库 ' MY_DB&#39 ;.无法完成具有数据复制的ALTER TABLE。设置'选择 成'数据库选项并重新运行。
答案 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
现在看起来很明显,我知道选项是什么。