sql >> データベース >  >> RDS >> Oracle

テーブルを変更して列のデフォルト値を変更する

    何が起こるかについてのあなたの信念は正しくありません。列のデフォルト値を設定しても、テーブル内の既存のデータには影響しません。

    col2列のテーブルを作成します デフォルト値はありません

    SQL> create table foo(
      2    col1 number primary key,
      3    col2 varchar2(10)
      4  );
    
    Table created.
    
    SQL> insert into foo( col1 ) values (1);
    
    1 row created.
    
    SQL> insert into foo( col1 ) values (2);
    
    1 row created.
    
    SQL> insert into foo( col1 ) values (3);
    
    1 row created.
    
    SQL> select * from foo;
    
          COL1 COL2
    ---------- ----------
             1
             2
             3
    

    次に、テーブルを変更してデフォルト値を設定すると、既存の行については何も変更されません

    SQL> alter table foo
      2    modify( col2 varchar2(10) default 'foo' );
    
    Table altered.
    
    SQL> select * from foo;
    
          COL1 COL2
    ---------- ----------
             1
             2
             3
    
    SQL> insert into foo( col1 ) values (4);
    
    1 row created.
    
    SQL> select * from foo;
    
          COL1 COL2
    ---------- ----------
             1
             2
             3
             4 foo
    

    その後、デフォルトを再度変更しても、既存の行は変更されません

    SQL> alter table foo
      2    modify( col2 varchar2(10) default 'bar' );
    
    Table altered.
    
    SQL> select * from foo;
    
          COL1 COL2
    ---------- ----------
             1
             2
             3
             4 foo
    
    SQL> insert into foo( col1 ) values (5);
    
    1 row created.
    
    SQL> select * from foo;
    
          COL1 COL2
    ---------- ----------
             1
             2
             3
             4 foo
             5 bar
    


    1. ASP.NETとSQLServer間の接続プールの問題を解決するにはどうすればよいですか?

    2. PL / SQL BEGIN ... ENDブロックはいつネストする必要がありますか?

    3. 環境変数を設定せずにMacOS/XにOracleInstantclientをインストールしますか?

    4. データベース管理者向けのトップMySQLブログおよびWebサイト