2015-08-18 146 views
1

如何刪除Sybase ASE 15表設置中的列。刪除Sybase ASE表中的列

我已經嘗試了一些,但沒有成功:

alter table my_table 
drop column1, column2 

除了看它沒有提供任何解決我的問題Sybase documentation

'select into'數據庫選項未啓用數據庫 'my_db'。帶有數據拷貝的ALTER TABLE無法完成。將'select '設置爲'數據庫選項並重新運行。

回答

3

由於在數據庫中的select into選項是關閉的,有兩個選擇要麼你使用

sp_dboption my_db, "select into", true 

OR

no datacopy參數的改變select into選項表刪除列允許您從表中刪除列而不執行數據複製,並減少了alter table drop列運行所需的時間。

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

ALTER TABLE my_table 
DROP column1, column2 
WITH no datacopy 
+0

這不適合我。它說「關鍵字附近的語法不正確」WITH' –

+0

@mani_nz: - 提出新問題或在評論中顯示您的查詢 – HaveNoDisplayName

+0

'sp_dboption my_db,「select into,」true「在我的工作不起作用,但用雙引號替換爲單引號確實有用 –

1

您忘記在查詢中使用關鍵字'COLUMN'。使用語法如下: -

ALTER TABLE my_table 
DROP COLUMN column1, column2 
+0

這不是Sybase語法,儘管我確實嘗試過。我發現我的解決方案。 – insidesin

+0

我也很震驚地看到,COLUMN關鍵字在DOCUMENTION中沒有提及。但我認爲這是各地使用的默認ANSI語法。但最重要的是,你忘了接受我的答案。 ;) –

0

我找到了解決辦法。我的新測試數據庫關閉了「select into」選項,這意味着表格的刪除/更改被拒絕。

sp_dboption my_db, "select into", true

這一切現在看起來太明顯了,我知道是什麼選項。

1

有趣的是,必須打開「select into」這一事實意味着Sybase服務器在內部將數據從舊錶複製到表的新副本,而不使用事務日誌(或使用事務日誌只記錄頁面的分配,而不是頁面內的數據更改)。 IE瀏覽器。有點像批量複製。我想知道這是否會導致複製問題?

另外,爲了完整起見,從15.7.1版開始,「no datacopy」功能是新增功能。

2

只是想與你分享我剛剛有類似的問題,在我的情況下,我不得不在每個列名前添加「drop」。代碼如下所示:

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

commit; 

我工作的某些舊版本的sybase並不那麼靈活。 乾杯