我想在这里更新类别表。在jsp中 代码如下:
pstmt = conn.prepareStatement("UPDATE category SET description = ? where categoryname = ?");
pstmt.setString(1, request.getParameter("description"));
pstmt.setString(2, request.getParameter("categoryname"));
如果使用这种方式我只能更改描述值而不是categoryname值。 表格在这里:
CREATE TABLE category
(
categoryname character varying NOT NULL,
description character varying,
CONSTRAINT category_pkey PRIMARY KEY (categoryname)
)
WITH (
OIDS=FALSE
);
ALTER TABLE category
OWNER TO postgres;
我想知道我是否也可以更改categoryname列值。如何更改jsp代码? categoryname是主键,因为product表在此处引用了外键。 感谢。
答案 0 :(得分:0)
是的,您可以更改categoryname列值,但要小心。如果使用已存在的值更新此字段,则查询可能会失败。
正如Joop所说,最佳做法是添加一个额外的字段作为主键,该字段与业务数据有任何关系。
您的新数据库结构可能如下所示:
CREATE TABLE category
(
id serial not null,
categoryname character varying NOT NULL,
description character varying,
CONSTRAINT category_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE category
OWNER TO postgres;
当然,外键必须引用' id'而不是' categoryname'