激情五月天婷婷,亚洲愉拍一区二区三区,日韩视频一区,a√天堂中文官网8

<ul id="buwfs"><strike id="buwfs"><strong id="buwfs"></strong></strike></ul>
    <output id="buwfs"></output>
  • <dfn id="buwfs"><source id="buwfs"></source></dfn>
      <dfn id="buwfs"><td id="buwfs"></td></dfn>
      <div id="buwfs"><small id="buwfs"></small></div>
      <dfn id="buwfs"><source id="buwfs"></source></dfn>
      1. <dfn id="buwfs"><td id="buwfs"></td></dfn>
        始創(chuàng)于2000年 股票代碼:831685
        咨詢(xún)熱線:0371-60135900 注冊(cè)有禮 登錄
        • 掛牌上市企業(yè)
        • 60秒人工響應(yīng)
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補(bǔ)償
        全部產(chǎn)品
        您的位置: 網(wǎng)站首頁(yè) > 幫助中心>文章內(nèi)容

        Oracle中默認(rèn)值default的使用方法

        發(fā)布時(shí)間:  2012/9/12 17:17:41

        在創(chuàng)建數(shù)據(jù)庫(kù)表時(shí),你可以指定一個(gè) DEFAULT 值(即默認(rèn)值)。對(duì)數(shù)據(jù)庫(kù)字段使用默認(rèn)值有助于將數(shù)據(jù)庫(kù)設(shè)計(jì)問(wèn)題與應(yīng)用程序代碼隔離。

        可以在以后某個(gè)時(shí)候通過(guò)一條 ALTER TABLE 命令改變一個(gè)字段的默認(rèn)值,改變之后應(yīng)用程序代碼會(huì)立即開(kāi)始使用新值。

        有一點(diǎn)是很重要的,即 DEFAULT 值只有當(dāng)一個(gè)字段沒(méi)有在 INSERT 或 MERGE 中指定值,或者使用了 DEFAULT 關(guān)鍵字時(shí)才會(huì)使用。如果你不顯式地聲明一個(gè) DEFULAT 值,Oracle 將隱式地將默認(rèn)值定義為 NULL,而且 DEFAULT 關(guān)鍵字也是這樣。從 Oracle 9i開(kāi)始,可以在 DEFAULT 子句中使用諸如 SYSDATE 或 CURRENT_TIMESTAMPE 之類(lèi)的偽字段。例如:-
         


        create table t1
        (
            id$ integer not null,
            charcol char default 'Y',
            datecol date default sysdate,
            strcol varchar2(30) default user,
            intcol integer default 12
        );
        insert into t1 (id$) values (1);
        select * from t1;

               ID$ C DATECOL   STRCOL                             INTCOL
        ---------- - --------- ------------------------------ ----------
                 1 Y 28-MAY-04 SCOTT                                  12


        DEFAULT 關(guān)鍵字與INSERT、MERGE 或UPDATE 語(yǔ)法比起來(lái)可以看上去沒(méi)有那么必要,但是想一下如果你希望在插入一列數(shù)據(jù)時(shí)使用所有默認(rèn)值,那么你就不會(huì)這么認(rèn)為了。Oracle 不接受INSERT INTO <table> 或INSERT INTO <table> VALUES () 作為有效的 SQL。必須指定至少一個(gè)字段,但是可以使用 DEFAULT 關(guān)鍵字來(lái)允許使用默認(rèn)值,而非硬編碼值,所以下面是有效的語(yǔ)法,它將使用所有 DEFAULT 值創(chuàng)建一行記錄。

        create table t2(charcol char default 'Y',datecol date default sysdate);
        insert into t2 (charcol) values (default);
        select * from t2;

        C DATECOL
        - ---------
        Y 28-MAY-04

        一個(gè)常見(jiàn)的問(wèn)題
        一個(gè)常見(jiàn)的問(wèn)題是模擬其它數(shù)據(jù)庫(kù)提供商的 Autonumber 功能,該功能是使用某種順序數(shù)字自動(dòng)地填充某個(gè)字段。在 Oracle 數(shù)據(jù)庫(kù)中,不能指定一個(gè)順序數(shù)字作為一個(gè)字段的 DEFAULT 值;然而,可以使用觸發(fā)器模擬這一功能。即使一個(gè)字段聲明為 NOT NULL,也依然可以在 INSERT 語(yǔ)句中忽略這個(gè)字段,而使用一個(gè)觸發(fā)器來(lái)填充該字段的值。注意使用 DEFAULT 關(guān)鍵字比使用顯式的 NULL 可讀性要好。

        create sequence t3_seq;
        create table t3(id$ integer constraint t3_pk primary key);
        create or replace trigger t3_autonumber
        before insert on t3 for each row
        begin
            if :new.id$ is null then
                select t3_seq.nextval into :new.id$ from dual;
            end if;
        end;
        /
        show errors;

        insert into t3(id$) values (default);
        select * from t3;

               ID$
        ----------
                 1


        可以使用SYS_CONTEXT 值的集合中的默認(rèn)值來(lái)填充字段,并收集有關(guān)某處一個(gè)會(huì)話的重要信息:

        create table t4
        (
            when date default SYSDATE,
            db_domain varchar2(200) default SYS_CONTEXT('USERENV','DB_DOMAIN'),
            host varchar2(256) default SYS_CONTEXT('USERENV','HOST'),
            ip_address varchar2(256) default SYS_CONTEXT('USERENV','IP_ADDRESS'),
            language varchar2(256) default SYS_CONTEXT('USERENV','LANGUAGE'),
            protocol varchar2(200) default SYS_CONTEXT('USERENV','NETWORK_PROTOCOL'),
            terminal varchar2(200) default SYS_CONTEXT('USERENV','TERMINAL')
        );
        insert into t4 (when) values (default);
        select * from t4;

        WHEN
        ---------
        DB_DOMAIN
        ------------------------------------------------------------------------------
        HOST
        ------------------------------------------------------------------------------
        IP_ADDRESS
        ------------------------------------------------------------------------------
        LANGUAGE
        ------------------------------------------------------------------------------
        PROTOCOL
        ------------------------------------------------------------------------------
        TERMINAL
        ------------------------------------------------------------------------------
        28-MAY-04
        scott.bn
        MSHOME\SCOTT-LAP
        AMERICAN_AMERICA.AL32UTF8
        SCOTT-LAP

        還可以使用偽字段SYS_GUID 來(lái)填充一個(gè)字段;它具有全局唯一性的優(yōu)點(diǎn),并且不需要順序數(shù)字或觸發(fā)器開(kāi)銷(xiāo):

        create table t5(id$ raw(16) default sys_guid()
            constraint t5_pk primary key);
        insert into t5(id$) values (default);
        select * from t5;

        ID$
        --------------------------------
        643718A07DCC43F2AC95312FD43617BA

         


        本文出自:億恩科技【mszdt.com】

        服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

      2. 您可能在找
      3. 億恩北京公司:
      4. 經(jīng)營(yíng)性ICP/ISP證:京B2-20150015
      5. 億恩鄭州公司:
      6. 經(jīng)營(yíng)性ICP/ISP/IDC證:豫B1.B2-20060070
      7. 億恩南昌公司:
      8. 經(jīng)營(yíng)性ICP/ISP證:贛B2-20080012
      9. 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
      10. 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
      11. 專(zhuān)注服務(wù)器托管17年
        掃掃關(guān)注-微信公眾號(hào)
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問(wèn):河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
          0
         
         
         
         

        0371-60135900
        7*24小時(shí)客服服務(wù)熱線