第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Oracle上使用自動增量創(chuàng)建id?

如何在Oracle上使用自動增量創(chuàng)建id?

嗶嗶one 2019-05-30 12:50:35
如何在Oracle上使用自動增量創(chuàng)建id?在Oracle中似乎沒有自動增量的概念,直到并包括版本11g。如何在Oracle 11g中創(chuàng)建行為類似自動增量的列?
查看完整描述

4 回答

?
慕仙森

TA貢獻1827條經(jīng)驗 獲得超8個贊

SYS_GUID返回一個GUID-一個全局唯一的ID。一個SYS_GUIDRAW(16)。它不生成遞增的數(shù)值。

如果要創(chuàng)建一個遞增的數(shù)字鍵,則需要創(chuàng)建一個序列。

CREATE SEQUENCE name_of_sequence  START WITH 1
  INCREMENT BY 1
  CACHE 100;

然后,您可以在您的INSERT陳述

INSERT INTO name_of_table( primary_key_column, <<other columns>> )
  VALUES( name_of_sequence.nextval, <<other values>> );

或者,可以定義一個觸發(fā)器,該觸發(fā)器使用序列自動填充主鍵值。

CREATE OR REPLACE TRIGGER trigger_name
  BEFORE INSERT ON table_name  FOR EACH ROWBEGIN
  SELECT name_of_sequence.nextval    INTO :new.primary_key_column    FROM dual;END;

如果使用的是Oracle 11.1或更高版本,則可以稍微簡化觸發(fā)器

CREATE OR REPLACE TRIGGER trigger_name
  BEFORE INSERT ON table_name  FOR EACH ROWBEGIN
  :new.primary_key_column := name_of_sequence.nextval;END;

如果你真的想用SYS_GUID

CREATE TABLE table_name (
  primary_key_column raw(16) default sys_guid() primary key,
  <<other columns>>)


查看完整回答
反對 回復 2019-05-30
?
嚕嚕噠

TA貢獻1784條經(jīng)驗 獲得超7個贊

在甲骨文12c中,你可以這樣做,

CREATE TABLE MAPS(
  MAP_ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1) NOT NULL,
  MAP_NAME VARCHAR(24) NOT NULL,
  UNIQUE (MAP_ID, MAP_NAME));

在甲骨文(前12C)。

-- create tableCREATE TABLE MAPS(
  MAP_ID INTEGER NOT NULL ,
  MAP_NAME VARCHAR(24) NOT NULL,
  UNIQUE (MAP_ID, MAP_NAME));-- create sequenceCREATE SEQUENCE MAPS_SEQ;-- create tigger using the sequenceCREATE OR REPLACE TRIGGER MAPS_TRG 
BEFORE INSERT ON MAPS 
FOR EACH ROWWHEN (new.MAP_ID IS NULL)BEGIN
  SELECT MAPS_SEQ.NEXTVAL  INTO   :new.MAP_ID  FROM   dual;END;/


查看完整回答
反對 回復 2019-05-30
?
汪汪一只貓

TA貢獻1898條經(jīng)驗 獲得超8個贊

這里有三種口味:

  1. 數(shù)字

    。簡單增加數(shù)值,例如1,2,3,.
  2. 吉德

    。全局Univeral標識符,作為

    RAW

    數(shù)據(jù)類型。
  3. GUID(字符串)

    。和上面一樣,但是作為一個字符串,在某些語言中可能更容易處理。

x身份列。代用FOO在每個示例中使用您的表名。

-- numerical identity, e.g. 1,2,3...create table FOO (
    x number primary key);create sequence  FOO_seq;create or replace trigger FOO_trg
before insert on FOOfor each rowbegin
  select FOO_seq.nextval into :new.x from dual;end;/-- GUID identity, e.g. 7CFF0C304187716EE040488AA1F9749A-- use the commented 
  out lines if you prefer RAW over VARCHAR2.create table FOO (
    x varchar(32) primary key        -- string version
    -- x raw(32) primary key         -- raw version);create or replace trigger FOO_trg
before insert on FOOfor each rowbegin
  select cast(sys_guid() as varchar2(32)) into :new.x from dual;  -- string version
  -- select sys_guid() into :new.x from dual;                     -- raw versionend;/

最新情況:

Oracle 12c引入了這兩個不依賴觸發(fā)器的變體:

create table mytable(id number default mysequence.nextval);create table mytable(id number generated as identity);

第一種方法以傳統(tǒng)方式使用序列;第二種方法在內(nèi)部管理值。



查看完整回答
反對 回復 2019-05-30
  • 4 回答
  • 0 關注
  • 1466 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號