kzen.dev
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
Khizar Iqbal
Khizar Iqbal
質問

ORA-02264: 名前はすでに既存の制約によって使用されています。

SQLで作業しているのですが、テーブルの作成で問題に直面しています! 以下は私のコードです。

CREATE TABLE Voucher_Types
(
    ID Number(3, 0),
    Abbreviation VarChar(2),
    Voucher_Type VarChar(100),
    EntryBy VarChar(25),
    EntryDate Date,
    CONSTRAINT ID_PK Primary Key(ID)
);

というエラーが出ています。 ORA-02264: name already used by an existing constraint<br /&gt.私はOracle10gを使用しています。 Oracle10g<br /&gt.を使用しています。 このような場合、どのようにすればよいのでしょうか?って感じです。

3 2014-02-28T07:45:18+00:00 3
プログラミング
sql
oracle
oracle10g
この質問には 1 つの答え があり、読むには ログイン してください。
解決策・回答
Ren&#233; Nyffenegger
René Nyffenegger
28日 2月 2014 в 7:49
2014-02-28T07:49:31+00:00
さらに
ソース
編集
#23841430

ID_PK`という名前ですでに制約されている別のテーブルがあります。

それがどのテーブルなのか知りたい場合は、次のようにしてください。

select owner, table_name from dba_constraints where constraint_name = 'ID_PK';

おそらく、create table ステートメントをコピーしましたが、主キー'制約の名前を変更していません。

一般的に、制約の名前にテーブル名を含めることは良い習慣であると考えられています。その理由の1つは、まさにこのようなエラーを防ぐためです。

ですから、あなたのケースでは、次のように使用します。

CREATE TABLE Voucher_Types
(
   ... 
   CONSTRAINT Voucher_Types_PK Primary Key(ID)
);

更新 同じ制約名を2回使用することはできないのでしょうか?(コメントでのご質問の通りです)。これはまさに、制約を識別するための名前であるためです。実行中のシステムで制約の違反があった場合、それがどの制約であったかを知りたいので、名前が必要です。しかし、この名前が複数の制約を参照できるのであれば、名前は特に意味がない。

Ren&#233; Nyffenegger
René Nyffenegger
編集した答え 28日 2月 2014 в 8:27
10
0
Frank Schmitt
Frank Schmitt
28日 2月 2014 в 7:49
2014-02-28T07:49:43+00:00
さらに
ソース
編集
#23841431

エラーメッセージは、スキーマにID_PKという名前の別の制約がすでに存在することを伝えています。

CREATE TABLE Voucher_Types
(
    ID Number(3, 0),
    Abbreviation VarChar(2),
    Voucher_Type VarChar(100),
    EntryBy VarChar(25),
    EntryDate Date,
    CONSTRAINT VOUCHER_TYPES_ID_PK Primary Key(ID)
);

問題の制約を見つけるには

SELECT * FROM user_constraints WHERE CONSTRAINT_NAME = 'ID_PK'
3
0
 i100
i100
28日 2月 2014 в 7:53
2014-02-28T07:53:03+00:00
さらに
ソース
編集
#23841432

これは、ID_PKという制約があることを意味します。 CONSTRAINT Voucher_Types_ID_PK Primary Key(ID)` 例えば、以下のようにします。

で存在するかどうか確認できます。

select * from user_constraints where upper(constraint_name) = 'ID_PK';

または

select * from all_constraints where upper(constraint_name) = 'ID_PK';
0
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Ilya Smirnov
登録済み 1日前
2
Денис Васьков
登録済み 2日前
3
Dima Patrushev
登録済み 5日前
4
sirojidddin otaboyev
登録済み 1週間前
5
Елена Гайдамамакинат
登録済み 1週間前
JA
RU
© kzen.dev :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属