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

テーブルのすべての列にデフォルト値を設定する方法は?

    それはできません。すべての列とそれぞれの NVL() 関数を入力する必要があります。大変な作業のように思えますが、列のいずれかが DATE またはその他の「特殊な」データ型である場合にどうなるかを考えてみてください。

    多くの列があり、労力を本当に節約したい場合は、データ ディクショナリから句を生成できます。

     select 'nvl('|| column_name || ', 0)' 
     from user_tab_columns
     where table_name = 'STUDENT'
     order by column_id;
      

    結果セットをエディターにカット アンド ペーストします。

    このルートから始めると、より洗練されたものになるのは簡単です:

     select case when column_id > 1 then ',' end ||
           'nvl('|| column_name || ',' ||
           case when data_type = 'DATE' then 'sysdate'
                when  data_type = 'VARCHAR2' then '''DEF''' 
                else '0' end ||
           ')' 
     from user_tab_columns
     where table_name = 'STUDENT'
     order by column_id;
      

    1. MySQLテーブルにカスタムCHECK制約を追加するにはどうすればよいですか?

    2. Oracleデータベースが自動コミットに設定されているかどうかを確認するにはどうすればよいですか?

    3. SQLで列の値を合計する方法は?

    4. 更新クエリのパフォーマンスの問題