0

IDそれぞれが主キー列を持ついくつかのテーブルを持つデータベースがあります。すべての には、 、 などIDの巨大な乱数が含まれています。この値を 1 ( 、、など)から時系列で編集および変更する最も簡単な方法は何ですか? 行の順序は関係ありません。8271400149827141241123

SQL Server、Oracle、PostgreSQL、および SQLite に対して実行したいと考えています (それぞれに異なるソリューションが存在する可能性があります)。

IDさらに、 (外部キー)に依存するいくつかのテーブルがあるとします。

4

3 に答える 3

1

Oracle ソリューション: 列 ID を主キーとする表 some_table を指定:

CREATE TABLE my_order AS SELECT id, rownum rn FROM some_table;
ALTER TABLE my_order ADD CONSTRAINT pk_order PRIMARY KEY (id);

UPDATE
  (SELECT t.*, o.rn FROM some_table t JOIN my_order o on (t.id = o.id))
SET id = rn;

DROP TABLE my_order;

Oracleのrownumの代わりに分析関数row_numberを使用するだけで、PostgreSQLで同様のものを実行できるはずです。他のエンジンについてはわかりません。

テーブルを参照する場合は、外部キー制約が ON UPDATE CASCADE であることを確認してください。

于 2013-10-18T13:02:56.920 に答える