处理(非)现有数据
Handle (non)existing data
我有一个 table,其中包含用户、类别和数量的列。
用户可以从每个类别中购买一定数量的产品。我只想存储最后一次购买。
User Category Amount
1 100 15
1 103 25
假设此用户刚从 100 或 110 购买了 30 件。附加类别或新类别。这可以使用以下伪代码来处理:
SELECT amount FROM table WHERE user=1 AND category=100
if row exists
UPDATE table SET amount=30 WHERE user=1 AND category=100
else
INSERT INTO table (user, category, amount) VALUES(1, 100, 30)
另一种方法是,始终删除旧值(不存在时忽略错误消息(并始终插入新值。
DELETE FROM table WHERE user=1 AND category=100
INSERT INTO table VALUES(1, 100, 30)
从性能的角度来看,这些模式中的哪一个是首选?
存在哪个PK和FK重要吗?
mysql
支持replace
,所以不需要delete
insert
或update
。但是这个假定您的 table 上有一个唯一键或主键作为参考
REPLACE
INTO yourtable (user, category, amount)
VALUES (1, 100, 30);
我有一个 table,其中包含用户、类别和数量的列。 用户可以从每个类别中购买一定数量的产品。我只想存储最后一次购买。
User Category Amount
1 100 15
1 103 25
假设此用户刚从 100 或 110 购买了 30 件。附加类别或新类别。这可以使用以下伪代码来处理:
SELECT amount FROM table WHERE user=1 AND category=100
if row exists
UPDATE table SET amount=30 WHERE user=1 AND category=100
else
INSERT INTO table (user, category, amount) VALUES(1, 100, 30)
另一种方法是,始终删除旧值(不存在时忽略错误消息(并始终插入新值。
DELETE FROM table WHERE user=1 AND category=100
INSERT INTO table VALUES(1, 100, 30)
从性能的角度来看,这些模式中的哪一个是首选? 存在哪个PK和FK重要吗?
mysql
支持replace
,所以不需要delete
insert
或update
。但是这个假定您的 table 上有一个唯一键或主键作为参考
REPLACE
INTO yourtable (user, category, amount)
VALUES (1, 100, 30);