sql >> データベース >  >> RDS >> Oracle

PL / SQLの既存の表に列を追加する前に、列が存在するかどうかを確認するにはどうすればよいですか。

    Oracle Databaseの列に関するすべてのメタデータには、次のいずれかのビューを使用してアクセスできます。

    user_tab_cols; -ユーザーが所有するすべてのテーブルの場合

    all_tab_cols; -ユーザーがアクセスできるすべてのテーブルの場合

    dba_tab_cols; -データベース内のすべてのテーブル。

    したがって、SCOTT.EMP表でADD_TMSのような列を探していて、その列が存在しない場合にのみ列を追加する場合、PL/SQLコードはこれらの行に沿ったものになります。

    DECLARE
      v_column_exists number := 0;  
    BEGIN
      Select count(*) into v_column_exists
        from user_tab_cols
        where upper(column_name) = 'ADD_TMS'
          and upper(table_name) = 'EMP';
          --and owner = 'SCOTT --*might be required if you are using all/dba views
    
      if (v_column_exists = 0) then
          execute immediate 'alter table emp add (ADD_TMS date)';
      end if;
    end;
    /
    

    これを(プロシージャの一部ではなく)スクリプトとして実行することを計画している場合、最も簡単な方法は、スクリプトにalterコマンドを含めて、スクリプトの最後にエラーを表示することです。スクリプト..

    file1.sqlがある場合

    alter table t1 add col1 date;
    alter table t1 add col2 date;
    alter table t1 add col3 date;
    

    また、col2が存在し、スクリプトを実行すると、他の2つの列がテーブルに追加され、ログに「col2」がすでに存在するというエラーが表示されるため、問題ないはずです。



    1. MySQLで2つの日付の差を計算する方法

    2. jQueryリモートメソッドの使用を検証して、ユーザー名がすでに存在するかどうかを確認します

    3. SpringBootからHerokuPostgresに接続する

    4. Symfony 2.0でデータベースをpostgresqlに変更するにはどうすればよいですか?