oracleを使って開発中に途中で、テーブルの世代管理が必要になるという悲劇に遭遇した際は
世代管理用フィールドの追加とPrimaryKeyを張り替えます
ALTER TABLE sample_table ADD (
rev NUMBER(8)
);
ALTER TABLE sample_table DROP PRIMARY KEY;
UPDATE sample_table SET rev = 0;
ALTER TABLE sample_table ADD PRIMARY KEY (ID, REV);
IDはもともと用意していたPrimary keyです
Primary keyにするにはnullではだめなので、0をセットしています