gpt4 book ai didi

java - 哪个更好 - 抛出异常或事先检查错误

转载 作者:行者123 更新时间:2023-11-29 12:30:17 25 4
gpt4 key购买 nike

在我连接到 postgresql 的服务器中,我是否应该通过执行 "select * ..." 检查用户名是否已存在于表中,然后获取结果集中的行数我的行数等于零,然后插入用户名?
或者直接在表中插入用户名。如果它已经存在,那么它将抛出一个可以被捕获的错误。
注意:用户名是主键

上面两个做哪个更好?

最佳答案

您应该使用“try-and-catch exception”方法,因为无论如何您都必须这样做。

如果您先检查,就没有什么可以阻止有人在您的检查和插入之间为该用户插入一行,在这种情况下,即使您的检查没有找到该用户,该用户也会在表中。

无法在某种交易中运行检查和插入(以便其他人无法在此期间插入该用户)。您不能确定非异常是否有效。

虽然许多 DBMS 提供事务支持,但我不知道任何会锁定您尚未插入的行:-)

当然,如果您的应用程序设计为只有您的进程会插入用户(并序列化),您可以使用先检查方法。但我会发表大量评论,大意是如果你扩大规模,就需要重新审视它。

关于java - 哪个更好 - 抛出异常或事先检查错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9716677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com