[英]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_COLUMNS
( ALL_TAB_COLUMNS
与owner = '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.