我有两张桌子:
create table test1 (
oldPrimaryKey varchar(100) primary key,
someText varchar(100)
)
create table test2 (
someText varchar(100),
oldPrimaryKey varchar(100) references test1(oldPrimaryKey)
)
我需要将oldPrimaryKey
更改为新的,所以我这样做:
丢弃旧的一把钥匙:
创建新列:
现在我有这样的事情:
CREATE TABLE test1
(
oldprimarykey character varying(100) NOT NULL,
sometext character varying(100),
newprimarykey bigint NOT NULL,
CONSTRAINT keyname PRIMARY KEY (newprimarykey)
)
CREATE TABLE test2
(
sometext character varying(100),
oldprimarykey character varying(100),
CONSTRAINT test2_oldprimarykey_fkey FOREIGN KEY (oldprimarykey)
REFERENCES test1 (oldprimarykey) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
我现在不知道该做什么(某些脚本?)。我需要将表test2
列oldprimarykey
的值更改为表test1
列newprimarykey
中的相应值。
如果它太混乱,我会尝试举例说明正常数据:
来自table1的行(oldprimarykey,sometext,newprimarykey):
table2中的相应行(sometext,oldprimarykey):
我想将table2中的电子邮件地址从table1更改为相应的int。
答案 0 :(得分:1)
这应该这样做:
update test2
set newprimarykey = t1.newprimarykey
from test1 t1
where t1.oldprimarykey = test2.oldprimarykey;
SQLFiddle示例:http://sqlfiddle.com/#!15/e558a/1