2017-03-06 18 views
-1

最近、私のクライアントがORA-00001:一意性に違反したというエラーが発生しました。これは、プログラムが2つのテーブルを切り捨て、それらにデータを挿入しようとしたときに発生しました。エラー・ログ・ファイルから は、切り捨てステップが完了した、 はこの後INTERNET_ITEM空のテーブルに一意の制約がありません

しかし、右から削除INTERNET_GROUP から削除し、Internet_groupテーブルへの挿入はORA-00001エラーを引き起こしました。このエラーに関連するデータベース設定があるかどうか疑問に思っていますか?私はOracleを一度も使用しておらず、OracleがSELECT文で行をロックするかどうか疑問に思っています。その場合、行はロックされていて何とか削除されませんか?どんな助けもありがとうございます。

+2

truncate!=削除しますが、おそらく関連しません。あなたは複数の衝突する行を挿入しようとしただけではないと確信していますか?挿入しているデータは、既存のデータと比較して、それだけではなく、それ自体でユニークでなければなりません。そして、削除がロールバックされていないことを確信しています - これが起こった後にテーブルのデータをチェックしましたか? (それはあなたが壊れたインデックスまたは何かを持っている可能性がありますが、明らかに最初に除外する) –

+1

再現可能な例を与えることができますか?または少なくともDDL/DMLが関係していますか? – tbone

+0

削除がコミットされましたか? – BobC

答えて

0

切り捨てと削除の違いはわかってください。あなたはテーブルを切り捨てたと言いますが、あなたは "delete from"と言います。それはまったく違う。 あなたは、これはDDL(データ定義言語)文ではないと考えられているようコミットTRUNCATE文では必要ではないことを

truncate table internet_group reuse storage; 

心であなたを交換してみてください、テーブルを空にしたい確信している場合更新や削除などのDML(Data modification language)文。

また、選択行のロックもありません。しかし、変更はコミット時にデータベース内の他のセッションにのみ適用され、表示されます。 私はそれが起こったと思います。レコードを削除しましたが、コミット(まだ)を実行せず、その後に新しいレコードを挿入しました。

編集: おそらく、複数のレコードが挿入されている可能性があります。 データ自体が違反を引き起こす可能性があります。あなたはテーブルの制約を提供していただけますか?主キーまたはユニーク制約が必要です。それをあなたのデータセットに対して保持したいかもしれません。

関連する問題