1

ランダムな内容のこのランダム テーブルがあります。

ID | 名前| ミッション
1 | あああ | キター
2 | bbbb | エトレ
3 | cccc| qwqw
4 | dddd | 第5四半期
| ええええ | ポテンシャル
6 | ふふふふ | とと


私が望むのは、上記のテーブルに id=3 の列を別の名前と別のミッションで追加することですが、OLD id = 3 id = 4 に名前と以前の id のミッションが必要です=3、OLD id =4 は id=5 になり、id 5 の名前とミッションなどになります。
そのように、列の内側に列を入力したいのですが、その下の列にIDを+1増やしたいのですが、列は同じままです。以下の例:


ID | 名前| ミッション
1 | あああ | キター
2 | bbbb | エトレ
3 | zzzzzz| zzzzz
4 | cccc| qwqw
5 | dddd | 第6四半期
| ええええ | ポテンシャル
7 | ふふふふ | とと

なぜ私はこれをしたいのですか?2 つの CLOB を持つテーブルがあります。これらの CLOB の内部には、さまざまなクエリがあります。例: id =1 には、テーブルの作成の clob があります id=2 は、列に挿入します id=3 には、別のテーブルの作成があり
ます(またはクロブ)作成してから挿入してから関数を作成する必要があります。そのテーブルは巨大なスクリプトのようなものです。
なぜ私はこれをしているのですか?開発者はアプリケーションを構築しており、SQL が特定の順序で機能することを望んでいます。私には 6 人の開発者がいて、データ モデリングとパフォーマンス、およびスクリプトの実行方法を整理しています。したがって、上記の表は、スクリプトの呼び出しを整理するものです彼らは弱っている

4

2 に答える 2

7

簡単に言えば、それをしないでください。

このケースは、主キーにビジネス値、つまり「現実世界の値」を使用してはならない理由を強調しています。

あなたの場合、主キーを他の目的に使用しないことをお勧めします。行を並べ替えるために、追加の列「順序」を追加してから、その列を変更することをお勧めします。そうすれば、主キーと他のすべてのレコードを変更する必要がなくなります。

これにより、アプローチが現在のレコードの下にあるすべてのデータベース レコードを変更する必要があるという問題が回避されます。これは、非常に悪いアプローチのように思われます。その更新を元に戻そうとすることを想像してみてください ;)

ここにいくつかの詳細情報: https://stackoverflow.com/a/8777574/631619

于 2013-05-24T19:29:24.153 に答える
1
UPDATE random_table r1
SET id =
  (SELECT CASE WHEN id > 2 THEN id+1 ELSE id END id FROM random_table r2
  WHERE r1.mission=r2.mission
  )

次に、新しい値を挿入します。

于 2013-05-25T07:30:01.760 に答える