Oracle

在更改列時在 Oracle 中添加預設約束

  • November 3, 2018

我是甲骨文的新手。我需要將 SQL Server 命令移植到 Oracle。

我想更改一列以添加具有預設值的新約束。

SQL 伺服器命令

ALTER TABLE <schema_name>.<table_name> 
ADD CONSTRAINT [<constraint_name>]
DEFAULT (1) FOR [<column_name>]

甲骨文命令

ALTER TABLE <table_name>
ADD CONSTRAINT <constraint_name> 
DEFAULT (1) FOR <column_name>

執行 Oracle 查詢時出現以下錯誤:

Error report - 
SQL Error: ORA-00904: : invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

可能是因為FOR是無效的標識符?

但是,如何為特定列添加具有預設值的約束?

我們是否需要更改列並設置預設值?

哪種方法是正確的?

預設值不是 Oracle 中的約束。您只需將列更改為:

SQL> create table tab1 (col1 number, col2 number);

Table created.

SQL> alter table tab1 modify (col2 default 1);

Table altered.

SQL> select * from user_constraints;

no rows selected

SQL> insert into tab1 (col1) values (0);

1 row created.

SQL> select * from tab1;

     COL1       COL2
---------- ----------
        0          1

引用自:https://dba.stackexchange.com/questions/143608