12

、という名前のテーブルがありCUSTOMER、列がいくつかあります。それらの1つはですCustomer_ID

最初、Customer_ID列は値WILL NOTを受け入れNULLます。

コードレベルからいくつかの変更を加えたので、Customer_ID列はデフォルトで値を受け入れNULLます。

今の私の要件は、NULL値を受け入れるためにこの列を再度作成する必要があるということです。

このために、以下のクエリの実行を追加しました。

ALTER TABLE Customer MODIFY Customer_ID nvarchar2(20) NULL

次のエラーが発生します。

ORA-01451 error, the column already allows null entries so
therefore cannot be modified

これは、すでに値Customer_IDを受け入れる列を作成しているためNULLです。

上記のクエリを実行する前に、列が値を受け入れるかどうかを確認する方法はありNULLますか... ??

4

5 に答える 5

13

USER_TAB_COLUMNSで列NULLABLEを使用できます。これは、バイナリY/Nフラグを使用して列がnullを許可するかどうかを示します。

これをスクリプトに入れたい場合は、次のようにすることができます。

declare

   l_null user_tab_columns.nullable%type;

begin

   select nullable into l_null
     from user_tab_columns
    where table_name = 'CUSTOMER'
      and column_name = 'CUSTOMER_ID';

   if l_null = 'N' then
      execute immediate 'ALTER TABLE Customer 
                          MODIFY (Customer_ID nvarchar2(20) NULL)';
   end if;

end;

テーブルを変更するために動的SQLを使用しないことをお勧めします。手動で行い、最初にすべてを再確認してください。

于 2013-03-27T11:43:32.260 に答える
6

または、エラーを無視することもできます。

declare
    already_null exception;
    pragma exception_init (already_null , -01451);
begin
    execute immediate 'alter table <TABLE> modify(<COLUMN> null)';
    exception when already_null then null;
end;
/
于 2014-10-01T22:23:31.230 に答える
2

DEFAULT ON NULL以前に列に値を指定した場合、このエラーが発生する可能性がありNOT NULLます。

この場合、列をnull許容にするには、null許容NULL制約を変更するときにデフォルト値をリセットする必要があります。

例えば:

DEFINE table_name = your_table_name_here
DEFINE column_name = your_column_name_here;

ALTER TABLE &table_name
  MODIFY (
    &column_name
      DEFAULT NULL
      NULL
  );
于 2021-03-25T11:10:06.110 に答える
1

私はこのようなことをしました、それはうまくいきました。クエリを実行してみてください。エラーが発生した場合は、キャッチしてSQLExceptionください。

try {
stmt.execute("ALTER TABLE Customer MODIFY Customer_ID nvarchar2(20) NULL");
} catch (SQLException sqe) {
Logger("Column to be modified to NULL is already NULL : " + sqe);
}

これは正しいやり方ですか?

于 2013-03-28T03:50:47.737 に答える
0

既存のテーブルの制約を変更するには

たとえば...not null列に制約を追加します。

次に、指定された手順に従います。

1)変更を変更するテーブルを選択します。

2)Actions..--->列の選択---->追加をクリックします。

3)次に、列名、データ型、サイズなどを指定して、[OK]をクリックします。

4)列がテーブルに追加されていることがわかります。

5)Editボタンの左側にあるActionsボタンをクリックします。

6)次に、さまざまなテーブル変更オプションが表示されます。

7)columnリストからを選択します。

8)指定する特定の列を選択しますnot null

9)から選択Cannot be nullcolumn propertiesます。

10)それだけです。

于 2016-02-08T07:31:07.673 に答える