2017-10-25 6 views
0

Teradataが既存のテーブルをCREATE TABLEクエリで置き換えるために変更する必要がある設定は何ですか?
現在、テーブルが存在する場合は、CREATEにエラーが発生します。だから私はDROPそれを作成する前にテーブルにする必要があります。Teradata:既存のテーブルを "CREATE TABLE"に置き換えます

THX

+3

あなたは私の知る限りできません。テーブルを再作成するには、まずテーブルを削除する必要があります。 – Wndrr

+0

[テーブルが存在する場合はドロップテーブルを作成し、それが存在しない場合は作成してください](https://stackoverflow.com/questions/20155989/if-table-exists-drop-table-then-create- – Wndrr

+3

@Wndrr:これはTeradataでサポートされていないMySQL拡張です。しかし、ストアドプロシージャを使用してエミュレートすることができます。https://stackoverflow.com/a/39771103/2527905 – dnoeth

答えて

1
REPLACE PROCEDURE DROP_IF_EXISTS(IN table_name VARCHAR(60),IN db_name VARCHAR(60)) 
BEGIN 
    IF EXISTS(SELECT 1 FROM dbc.tables WHERE databasename=db_name AND tablename=table_name) 
    THEN 
    CALL DBC.SysExecSQL('DROP TABLE ' || db_name ||'.'|| table_name); 
    END IF; 
END; 

そして、あなたのDDLスクリプトで:

call drop_if_exists('$your_table_name','$your_db_name') 
; 
database $your_db_name; 
create table $your_table_name ... 
; 
+0

'AND TableKind = 'T''を追加し、' dbc.TablesV'とVARCHAR(128)を使うのが良いでしょう。しかし、単にテーブルを削除し、*テーブルが存在しない*エラーを無視する方が効率的です(https://stackoverflow.com/a/39771103/2527905を参照)。 – dnoeth

関連する問題