Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个包含 4 列(id、name、surname、tel)的表, id 是主键 名称,surname 和 tel 是唯一的。
现在我必须插入一行,如果已经有一行具有该名称-姓-tel 的行,则获取 id 并返回它,否则正常插入。
我想到了2个策略: 1)在插入之前做一个选择,如果没有找到就插入它,否则取id 2)尝试插入,如果发生错误代码1(违反唯一约束)做选择并取id
哪一个更好?还是我可以通过 php 执行另一种策略?
你是对的,这些是最好的选择。就性能而言,如果有的话,差异很小。
如果你做第一个,你还必须实施第二个。因为在您的第一个SELECT请求和您的第二个INSERT语句之间,另一个进程可能已经更改了数据库,除非您在单个事务中执行此操作。
SELECT
INSERT
你可以把它变成一个SELECT INTO语句来在一个查询中插入/检查,但是你仍然需要做第二个SELECT来获取 ID。
SELECT INTO
所以总而言之:我会选择第二个选项,您可以在其中插入并检查错误。