如何在oracle

时间:2018-03-28 12:02:59

标签: sql oracle plsql toad

我有1张 40 列的表格。在 40 列中,只有 5 NOT NULL ,其余列设置为 NULL 。如何在一次或在TOAD中将所有 NULL 列设置为 NOT NULL 。除了手动设置为NOT NULL之外,是否有可能这样做。

3 个答案:

答案 0 :(得分:3)

您可以使用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);

答案 1 :(得分:2)

您可以使用USER_TAB_COLUMNS循环浏览ALL_TAB_COLUMNSowner = 'schema'ALTER)和EXECUTE IMMEDIATE

在运行此代码之前,您可以先使用适当的值更新包含现有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;

答案 2 :(得分:0)

更改表将起作用。

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