pg 8.4 で主キー列を再作成したいと思います。しかし、私がしようとしているクエリは機能しません(実際には実行されません):
update beta
set id=rown
from
(select row_number() as rown
from beta as b over (order by b.id) -- b.id is null on all rows
) q;
pg 8.4 で主キー列を再作成したいと思います。しかし、私がしようとしているクエリは機能しません(実際には実行されません):
update beta
set id=rown
from
(select row_number() as rown
from beta as b over (order by b.id) -- b.id is null on all rows
) q;
この解決策を試しましたか?常に最初にすべてをバックアップします。
--Approach 2: Closer to Hubert's Examples
--Advantage: Easy to read - intuitive, doesn't rely on a primary key
--Disadvantage: Creates temp junk in the db
-- which means reusing in same session you must drop
-- and using in nested subquery results may be unpredictable
CREATE TEMP sequence temp_seq;
SELECT nextval('temp_seq') As row_number, oldtable.*
FROM (SELECT * FROM beta) As oldtable;
http://www.postgresonline.com/journal/archives/79-Simulating-Row-Number-in-PostgreSQL-Pre-8.4.html
ALTER TABLE
コマンドを使用する必要があります
ALTER TABLE beta ADD PRIMARY KEY (id);
このリンクはhttp://www.postgresql.org/docs/current/static/sql-altertable.htmlに役立つはずです