[mysql]主键中的值偶尔改变随着时间的推移

标签: sql MySQL
发布时间: 2015/6/11 22:48:09
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一些像这样的 MySQL 数据库中的表中定义的数据

CREATE TABLE `T_dev` (
    id          VARCHAR(20)         NOT NULL,
    date        DATETIME            NOT NULL,
    amount      VARCHAR(9)      DEFAULT NULL,
    PRIMARY KEY (id,date)
);

然后将例如插入记录

INSERT INTO T_dev VALUES 
('10000','2009-08-05 23:00:00','35')

然而,一个月后我得到一个报告,告诉我这准确的记录,应该有金额等于 30 因此

INSERT INTO T_dev VALUES 
('10000','2009-08-05 23:00:00','30')

然而,那 can´t 做因为 I´ve 定义的主键。我想用最新的一个,覆盖旧记录但不是真正改变我的主键。有何建议?

谢谢你。

亚历山大

解决方法 1:

由于该记录已存在,您不使用 INSERT 语句。 相反,使用 UPDATE 语句将值更改为该特定 id 和日期组合 30:

UPDATE T_dev SET amount = '30' 
WHERE id = '10000' AND date = '2009-08-05 23:00:00'

只是一种观察,你的表有一点的规范。 主键通常类型的 INT 和你 amount 可能会更好为 DECIMAL

赞助商