背景:我正在编写一个使用Java (用于DB2的V9.5)访问的应用程序。为了测试,我做了这样的测试:
CREATE TABLE country(
name VARCHAR(100) NOT NULL,
population BIGINT,
PRIMARY KEY(name)
);
CREATE TABLE city(
name VARCHAR(100) NOT NULL,
country VARCHAR(100) NOT NULL,
PRIMARY KEY(name),
FOREIGN KEY(country) REFERENCES country(name)
);这就是我的问题:
DB2不支持"ON UPDATE CASCADE“,并且仍然引用的主键不允许更改。那么,如何在城市仍在使用的情况下更改国家的名称呢?
我不是在寻找一种在Java语言中实现这一点的解决方案(在那里我可以插入新值,更新受影响的城市,并删除比旧值更高的值)必须有一种方法可以在DB2中做到这一点。但愿能去。
谢谢你的帮助。
发布于 2011-05-27 22:48:45
问题出在你的设计上。通常情况下,主键在插入后不应更改。您可能想要这样做:
CREATE TABLE country(
id BIGINT,
name VARCHAR(100) NOT NULL,
population BIGINT,
PRIMARY KEY(id)
);
CREATE TABLE city(
id BIGINT,
name VARCHAR(100) NOT NULL,
country_id BIGINT NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY(country_id) REFERENCES country(id)
);或者,您仍然可以将name列设置为UNIQUE
https://stackoverflow.com/questions/6153865
复制相似问题