oracleに自動インクリメントの列を作成する方法はありますか?行が削除された場合は、削除された次の値が削除された行を置き換えます。それをオラクルで行う方法はありますか?oracle主キーの連続値
0
A
答えて
0
(削除後のシーケンスに「穴」がある)その動作は、常にSEQUENCE
で発生します。ほとんどのアプリケーションでは、テーブルのid
がほとんど人工的で無意味なので、それは良いことであり、完全に機能します。その唯一の用途は、テーブルを関係と結びつけることです。そのために、穴は重要ではありません。
連続したシーケンスを作成してギャップを埋めるには、挿入時にトリガーを作成して、IDをシーケンス内の最初の「穴」の値で更新する必要がありますこのようなSELECT
:
SELECT MIN(tb.id) + 1 "first_seq_hole"
FROM yourTable tb
WHERE NOT EXISTS
(SELECT tb.id FROM yourTable tb2 WHERE tb.id + 1 = tb2.id)
が、けれども私はここにあなたの要件が何であるかわからないが、いくつかの点であなたはまだあなたの順序に穴を持っているかもしれません(あなたがそれらを埋めるためにいずれかを挿入しない10個のランダムな行を削除しないと言います) 。既存のIDを変更して行が削除されたときにすぐにギャップを埋め尽くさない限り、これは避けられません。あなたがそのIDを使って子テーブルを持っているなら、それは複雑で危険です。
関連する問題
- 1. oracleの表の主キー列を取得
- 2. Entity Framework - Oracle:主キーのないビュー
- 3. 主キーの定義、Hibernateリバースエンジニアリング、Oracleシーケンス
- 4. OracleおよびSQL Serverの主キー
- 5. Oracle SQL自動生成ID主キー
- 6. 主キー値の更新Cassandra
- 7. 複数値の主キー?
- 8. oracle SQLの連続レコード
- 9. SQL - クエリのMAX(値)の関連する主キーと値を取得する
- 10. 主キー違反エラーの後に続行
- 11. 3列のマージ値を照会し、Oracleの主キーとしてマージする
- 12. 新しい列をOracle表に追加した後の主キー値の生成
- 13. Oracle GoldenGateとVMWare連続タングステン
- 14. Oracle DBカウント非連続アクション
- 15. 複数のテーブル(主キー)に1つの外部キーを接続
- 16. Oracleデータベース:NULL値を持つ索引構成表(複数列主キー)
- 17. を選択し、主キーの値
- 18. 主キーの値を変更する
- 19. PreparedStatement +主キー列のOracle 12c + ORA-01461の選択
- 20. oracleのテーブルの主キーを見つける
- 21. Oracleの2つの列を持つ主キー?
- 22. djangoクエリは、主キーに関連する列の値を返します
- 23. 主キー
- 24. 主キー
- 25. INSERT INTOと主キー、自動インクリメントフィールド、デフォルト値
- 26. 主キーと外部キーの値の一致方法は?
- 27. Oracleビューに主キーを追加する方法は?
- 28. oracle - 主キーを使用してビューを作成する
- 29. Oracle ID列を持つ主キーが必要ですか?
- 30. ニューラルネットトレーニングの連続値
なぜそれをしますか?その列のインクリメンタル値を提供するシーケンスがありますが、古い行を置き換えるためには、a)並行しているユーザーにはうまくいかない、b)オーバーキル(すでに使用されている値にジャンプしないように複雑です。オラクルの頂点とあなたの質問との関係 – Alfabravo
oracleのSequencesを使って自動インクリメントの値を定義することができますが、これは主キーやidのような置換えを使用したくない場合です Oracleには、 'あなたのテーブル名からrowidを選択してください ' – Dean
[OracleでAUTO \ _INCREMENTでIDを作成する方法は?](https://stackoverflow.com/questions/11296361/how-to-create-id-with-auto-インクリメンタル・オン・オラクル) –