[英]Oracle/Php: insert a row and see if it is already in the table
我有一个包含4列的表(id,name,surname,tel)
id是主键
姓名,姓氏和电话都是独一无二的。
现在我必须插入一行,如果已经有一行具有该名称 - 姓氏 - tel获取id并返回它,否则正常插入。
我想到了2个策略:
1)在插入之前执行select,如果没有找到则插入它,否则取id
2)尝试插入,如果错误代码1(违反了唯一约束)发生,请执行select并取id
哪一个更好? 或者我可以用php做另一种策略?
你是对的,那些是最好的选择。 就性能而言,差异很小。
如果你做第一个,你仍然必须实现第二个。 因为在第一个SELECT
请求和第二个INSERT
语句之间,另一个进程可能已经更改了数据库,除非您在单个事务中执行此操作。
您可以将其转换为SELECT INTO
语句以在单个查询中进行插入/检查,但是您仍然需要执行第二次SELECT
来获取ID。
总而言之:我会选择插入并检查错误的第二个选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.