在我的代码中,我生成一个 ID 列表,然后将关联的数据输入到一个以 ID 作为主键的表中。让 SQLSever 抛出错误并处理它(完整性错误)是更好的做法吗?或者我应该先检查服务器中是否存在该 ID,然后执行插入?
最佳答案
如果您要插入多行,并且其中一行违反了约束,那么通常不会插入任何行。
这可能会很痛苦。因此,您可能需要在同时插入多行之前进行检查。这有助于保证数据有效;当然,当运行“真实”查询时,竞争条件仍然会产生问题。
也就是说,作为单独的查询进行检查会增加开销(额外的往返)。数据库无论如何都会进行检查(所以它是多余的)。并且,您无法从数据库中删除该检查(因为竞争条件)。
有些人还喜欢先检查一切是否正常,因此自动递增/身份 ID 不太可能出现间隙。当然,不能保证无间隙,因此这只是减少了间隙的一个原因。
This db<>fiddle 说明了这些问题。
关于mysql - 让SQL抛出错误然后完全处理或防止错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55363721/