以上内容不适用于表中的任意插入,但主要用于用户输入提交。
您还可以使用 SQL 在表上设置多列唯一约束(您可以直接在数据库中或通过 web2py .executesql() 方法执行此操作)。即使有这样的约束,您仍然希望在应用程序中进行一些输入验证,以避免数据库出现错误。
我为字段添加了CREATE UNIQUE INDEX
。我的主要问题是,捕获这些错误引发的异常的最佳方法是什么?当我尝试在INSERT
用户表单之外记录(带有重复键)时(这将绕过IS_NOT_IN_DB
检查/技术),是否有一个(或几个)地方可以捕获数据库层将引发的异常?或者我必须确保团队知道,当他们在此表上执行任何 INSERT 时,他们必须准备好捕获该异常?或者,......?此外,如果我有两个用户尝试插入这样的重复项,是否有一种简单的方法可以SQLFORM
让我捕获将引发的异常?(抱歉,所有新手问题。)
当我尝试插入一条记录(带有重复的键)时,是否有一个(或几个)地方可以捕获数据库层抛出的异常?
我不这么认为,但你可以编写一个自定义函数来将这样的插入包装在 try…except 中(或者以其他方式检查重复的键)。
另外,如果有两个用户尝试插入这样的重复项,SQLFORM 中是否有一种简单的方法来捕获将要抛出的异常?
当使用 SQLFORM 时,验证器应该捕获重复提交尝试并在表单上返回错误(对于第二个用户)。