2014-09-18 166 views
2

我的表定義檢查約束違反時間

CREATE TABLE PROVISION_HIST 
(
     card_nbr    number(9) primary key, 
     provision_loc_cd   varchar2(2), 
     start_ts     timestamp(6), 
     end_ts     timestamp(6), 
     last_updt_ts    timestamp(6), 
     provision_meta_data  xmltype, 
     unprovision_meta_data  xmltype, 
     PERIOD FOR user_valid_time (start_ts, end_ts) 
) 
PARTITION BY RANGE (end_ts) 
( 
    PARTITION PROVISION_HIST_P0 VALUES LESS THAN (TO_DATE('10-01-2014', 'MM-DD-YYYY')), 
    PARTITION PROVISION_HIST_P1 VALUES LESS THAN (TO_DATE('11-01-2014', 'MM-DD-YYYY')), 
    PARTITION PROVISION_HIST_P2 VALUES LESS THAN (TO_DATE('12-01-2014', 'MM-DD-YYYY')), 
    PARTITION PROVISION_HIST_P3 VALUES LESS THAN (TO_DATE('01-01-2015', 'MM-DD-YYYY')) 
); 

CREATE UNIQUE INDEX provision_hist_pk 
    ON PROVISION_HIST (card_nbr, provision_loc_cd, start_ts); 

我只需要插入一些虛擬數據進行測試。 所以我用

INSERT INTO provision_hist (CARD_NBR,PROVISION_LOC_CD, START_TS,END_TS,LAST_UPDT_TS,PROVISION_META_DATA,UNPROVISION_META_DATA) 
VALUES (4444,'lx',to_timestamp('03/18/2012 02:35 AM', 'MM/DD/YYYY HH:MI AM'),to_timestamp('12/01/2014 02:35 AM', 'MM/DD/YYYY HH:MI AM'),current_timestamp(6),'<Warehouse whono="200"><Building>Leased</Building> </Warehouse>','<Warehouse whono="200"> <Building>Leased</Building> </Warehouse>' 
); 

ORA-02290:檢查約束(USER_VALID_TIME793C79)違反

任何幫助將是巨大的。

謝謝。

+0

是user_valid_time的一個函數嗎? – Rika 2014-09-18 17:09:21

+0

@Rika它看起來只是用戶定義的期限數據類型名稱給我。 – user2711819 2014-09-18 17:12:37

+0

也是這個Oracle或SQL? – Rika 2014-09-18 18:30:38

回答

1

您剛剛顯示了與Oracle 12c的temporal validity功能Bug 18195286 : ORA-2290 ON INSERT INTO TABLE WITH TEMPORAL VALIDITY相關的已知錯誤的變體。

具體地,當一個改變或創建具有PERIOD FOR子句的表,將創建一個約束來驗證所選日期期間:

PERIOD FOR user_valid_time (start_ts, end_ts) 

產生的約束可以通過查詢USER_CONSTRAINTS顯示。它會顯示這樣的:在約束

SELECT search_condition 
FROM user_constraints 
WHERE table_name = 'PROVISION_HIST' 

結果:

(start_ts < end_ts) and (VALID > 0) 

INSERT語句中拋出這一限制的錯誤。

金伯格漢森先前確定了這一點,我只是列舉了實際的錯誤。這被確定爲在版本12.1.0.2中修復。

+1

這就是我正在考慮的錯誤,是的。我的問題是,虛擬無形列「VALID」在我的環境中始終具有負值。 – 2014-09-19 06:05:32