代码之家  ›  专栏  ›  技术社区  ›  Darbio

SQL唯一键插入

  •  5
  • Darbio  · 技术社区  · 14 年前

    我有一个Users表,它对用户名有一个唯一的约束(原因很明显)。

    它是。。。

    1. 如果我试图插入已经存在的用户名,最好捕获抛出的Sql异常。
    2. 在尝试将用户名插入数据库之前,请明确检查用户名?

    如果你也能说明原因,那就太好了!

    4 回复  |  直到 14 年前
        1
  •  3
  •   vcsjones    14 年前

    我先检查一下记录是否存在。独特的关键约束有助于防止应用程序首先允许“坏”数据通过的可能方式,而不是主要的停止方式。在可以避免的情况下,使用异常作为控制流机制(在本例中是验证)通常是一个坏主意。

        2
  •  2
  •   Samuel    14 年前

    我认为最好是处理这个例外。数据库是为处理用户名的唯一性而设计的,因此我认为它可以比您更有效地完成这项工作。它还增加了系统的可移植性和内聚性。如果您在多个地方添加用户,则必须重复用户名检查或创建方法,基本上您将重写数据库引擎已经编写的内容。

        3
  •  1
  •   Kevin O'Donovan    14 年前

    除了Samuel所说的,您还需要确保没有人输入一个记录,在您的支票和将记录添加到数据库之间可能会与您的记录发生冲突。你可以用一个锁来实现这一点,但是你必须捕捉由锁引起的异常。

        4
  •  0
  •   Tejas    14 年前

    我支持塞缪尔的话。最有效的方法是把它留给数据库。所有其他的选择都会耗费更多的时间和资源。。。。