- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的应用程序中使用 timetravel 函数(F.39.spi,PostgreSQL 9.1 文档),但它似乎无法正常工作。通过将行插入表中,一切正常,我正确地获得了开始和停止日期,但是当我尝试更新这些行时,postgres 给我关于违反 PRIMARY KEY 约束的错误。他正在尝试插入一个与前一个元组具有相同主 ID 的元组...
从数据库中的所有表中删除主键约束是疯狂的,但这是我需要的功能。那么也许您对时间旅行有一些经验?
我们将不胜感激任何形式的帮助。提前致谢。
数据链接:
CREATE TABLE cities
(
city_id serial NOT NULL,
state_id integer,
name character varying(80) NOT NULL,
start_date abstime,
stop_date abstime,
CONSTRAINT pk_cities PRIMARY KEY (city_id ),
CONSTRAINT fk_cities_states FOREIGN KEY (state_id)
REFERENCES states (state_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
-- Trigger: time_travel on cities
-- DROP TRIGGER time_travel ON cities;
CREATE TRIGGER time_travel
BEFORE INSERT OR UPDATE OR DELETE
ON cities
FOR EACH ROW
EXECUTE PROCEDURE timetravel('start_date', 'stop_date');
给出的陈述:
INSERT INTO cities(
state_id, name)
VALUES (20,'Paris');
没关系。我得到 start_date 和 stop_date。但是通过:
UPDATE cities SET name='Rome' WHERE name='Paris'
我收到错误 - 前面描述过。
状态模式
-- Table: states
-- DROP TABLE states;
CREATE TABLE states
(
state_id serial NOT NULL, -- unikatowy numer wojewodztwa
country_id integer, -- identyfikator panstwa, w ktorym znajduje sie wojewodztwo
name character varying(50), -- nazwa wojewodztwa
CONSTRAINT pk_states PRIMARY KEY (state_id ),
CONSTRAINT uq_states_state_id UNIQUE (state_id )
)
WITH (
OIDS=FALSE
);
不幸的是,作为一个新用户,我不能在这里张贴图片。你可以在那里看到它们:
城市表中的示例数据:korpusvictifrew.cba.pl/postgres_cities.png
来自表状态的示例数据:korpusvictifrew.cba.pl/states_data.png
最佳答案
时间旅行将 UPDATE 转换为旧记录的 stop_date 的 UPDATE 和具有已更改数据加上无限 stop_date 的新记录的 INSERT。由于 pk_cities,city_id 的记录不能超过一条。时间旅行触发器不允许您打破该要求。
你不能使用这个:
CONSTRAINT pk_cities PRIMARY KEY (city_id )
你必须使用这个
CONSTRAINT pk_cities PRIMARY KEY (city_id, stop_date)
关于postgresql - postgres 中的时间旅行 - 违反 PRIMARY KEY 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10529710/
我正在制作一个应用程序,我在其中为每个国家/地区分配不同的值并根据该值执行某些操作。喜欢: Argentina 3 Australia 7 USA 23 要选择国家/地区,我需要使用用户当前所在的国家
这里是一般 Node mongodb 问题。 我有这个功能: static addSpaceToCreator = ( userId, spaceId, callback ) => {
Linux 中的 tcp 数据路径是否有很好的概述(2.6,如果路径实际不同则不是 2.4)?在 tcp/ip 堆栈处理的不同阶段,数据包在哪里? 数据包如何打包到tcp段,然后是ip数据包。它是如何
我是一名优秀的程序员,十分优秀!