在我的DWH設計中,為了不丟失資料,我有如下的ProductCategory維度:
ProductSK ProductID ProductName BI_StartDate BI_EndDate
-1 -1 未定義 99991231 99991231
ProductSK是一個身份列。
我習慣于在SQL Server中使用打開/關閉身份插入,我怎樣才能在Oracle中做同樣的事情?
這是我的尺寸DDL :
CREATE TABLE ProductCategory (
ProductSK NUMBERATED ALWAYS AS IDENTITY,
ProductID NUMBER NOT NULL。
ProductName VARCHAR2(100) NOT NULL。
BI_StartDate NUMBER NOT NULL。
BI_EndDate NUMBER NOT NULL,
);
在SQL Server中的等價物 :
SET IDENTITY_INSERT sometableWithIdentity ON;
SET IDENTITY_INSERT sometableWithIdentity OFF;
uj5u.com熱心網友回復:
在SQL Server中
set identity on允許明確的值被插入到表的身份列中。
set identity on允許將明確的值插入到表的身份列中。基本上,您可以打開或關閉插入身份列的可能性,該列被定義為基于區間的數字序列。
在Oracle中,你可以選擇使用
。IDENTITY GENERATED BY DEFAULTGENERATED BY DEFAULT。Oracle為身份列生成一個值 如果你沒有提供任何值。如果你提供了一個值,Oracle將把該值插入 該值插入到身份列中。對于這個選項,Oracle將 如果你在身份列中插入一個NULL值,Oracle將發出一個錯誤。
示例
SQL> 創建 表 x ( c1 number generated by default as identity start with 1 increase by 1 , c2數)。 Table創建。 SQL> insert into x ( c2 ) values ( 1 ) 。 1 row 創建。 SQL> insert into x ( c1, c2 ) values ( 2, 2 ) 。 1 row 創建。 SQL> select * from x ; C1 C2 ---------- ---------- 1 1 2 2這個選項允許你插入或不插入(這有點像打開/關閉),在某種意義上與SQL Server的打開/關閉非常相似。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/307258.html
標籤:
