2016-10-31 23 views
0

制約名の競合を返すOracleでテーブルを作成します。私は、次のSQLを使用していますOracleでテーブルを作成しようとしています

CREATE TABLE SALES_TARGET(
SLS_REP_SK     NUMBER(38, 0) NOT NULL, 
MARKET_PRODUCT_HRCHY_SK NUMBER(38, 0) NOT NULL, 
FISCAL_PERIOD    VARCHAR2(6)  NOT NULL 
          CONSTRAINT VALID_FISCAL_PERIOD CHECK (LENGTH(FISCAL_PERIOD) = 6 AND REGEXP_LIKE(FISCAL_PERIOD, '^\d*$') AND (SUBSTR(FISCAL_PERIOD, 1, 4) BETWEEN '2010' AND '2050') AND (TO_NUMBER(SUBSTR(FISCAL_PERIOD, 5, 2)) BETWEEN 1 and 12)), 
CURR_SK     NUMBER(38, 0) NOT NULL, 
SALES_TARGET_AMT   NUMBER(18, 5) NOT NULL 
          CONSTRAINT POSITIVE_SALES_TARGET CHECK (SALES_TARGET_AMT >= 0), 
ETL_BATCH_ID    NUMBER(38, 0) NOT NULL, 
ETL_CREATED_LOAD_DT  DATE    NOT NULL, 
ETL_MODIFIED_LOAD_DT  DATE    NOT NULL, 
CONSTRAINT PK_SALES_TARGET PRIMARY KEY (SLS_REP_SK, MARKET_PRODUCT_HRCHY_SK, FISCAL_PERIOD) 
USING INDEX 
TABLESPACE DWH_NRM_INDEX 
) 
TABLESPACE DWH_NRM_DATA 
; 
それが原因制約名の競合に次のエラーを返して

Error report - 
SQL Error: ORA-02264: name already used by an existing constraint 
02264. 00000 - "name already used by an existing constraint" 
*Cause: The specified constraint name has to be unique. 
*Action: Specify a unique constraint name for the constraint. 

他の質問のようなクエリを使用を示唆してきたように:これは戻っている

select * from ALL_constraints where constraint_name = 'PK_SALES_TARGET'; 

結果はありません(私は他の制約名で上記を試しましたが、問題はありません)。

誰も私が私の行方不明の制約を見つけることができますか?

+1

あなたは他の制約を試してみましたか? PKを持っていないだけでなく、2つのチェック制約もあります。 – mathguy

答えて

1

あなたは確認してください3つの制約

CONSTRAINT VALID_FISCAL_PERIOD 
CONSTRAINT POSITIVE_SALES_TARGET 
CONSTRAINT PK_SALES_TARGET 

をspesifyは、それらのいずれかが既に存在していますか?

+0

マイケルありがとう。予想どおり、私は確かにばかだ。確かに3つの制約があり、私は最後のものだけをチェックしました。時間を無駄にして申し訳ありません。 –

関連する問題