簡體   English   中英

如何在oracle中的表中將所有列從null設置為not null

[英]How to set all column from null to not null in table in oracle

我有1個表有40列。 40列中,只有5列是NOT NULL ,其余列都設置為NULL 如何在一次或在TOAD中將所有NULL列設置為NOT NULL 除了手動設置為NOT NULL之外,是否有可能執行此操作。

您可以使用Alter Table命令執行此操作。 這條路:

ALTER TABLE table_name
  MODIFY (column_1 column_type NOT NULL,
          column_2 column_type NOT NULL,
          ...
          column_n column_type);

這將立即完成所有列中的更改。 此外,如果您的表已經在這些列上具有空值的數據,您還必須定義默認值。 這是一個示例:

ALTER TABLE table_name
  MODIFY (column_1 varchar2(100) DEFAULT 'some default' NOT NULL,
          column_2 varchar2(75) DEFAULT 'Some Value' NOT NULL);

您可以使用EXECUTE IMMEDIATE遍歷USER_TAB_COLUMNSALL_TAB_COLUMNSowner = 'schema' )和ALTER

在運行此表之前,您可以先使用適當的值更新包含現有NULL的表。

SET SERVEROUTPUT ON

BEGIN
    FOR q IN (
            SELECT 'ALTER TABLE ' || table_name || ' MODIFY ' || column_name || ' NOT  NULL' AS query
            FROM user_tab_columns
            WHERE table_name = 'YOURTABLE'
                AND NULLABLE = 'Y'
            ) 
   LOOP
     DBMS_OUTPUT.PUT_LINE(q.query);
     EXECUTE IMMEDIATE q.query;
   END LOOP;
END;

改變表將起作用。

alter table [nameOfYourTable] modify [nameOfColumn] [dataType] not null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM