我有一个网络应用程序,它将提供删除属于用户的小部件的功能。我现在进行删除的逻辑如下所示:
local delete_widget = function(widgetid, user)
local retval = ""
sql = "DELETE FROM widgets Where widgetid="..widgetid
cur, err = assert(con:execute(sql))
if not err then
sql = "SELECT * FROM widgets where widgetid = ".. widgetid
listofwidgets = executesqlandreturntable(sql)
if #listofwidgets == 0 then
retval = "Deleted widget"
else
retval = "Unable to delete widget"
end
else
retval = "unable to delete widget"
end
return retval
end
我想知道我是否应该将其更改为交易。现在,如果删除尝试由于某种原因失败,我什么也不做。我只是进行选择以查看它是否仍然存在,如果存在,我会抛出错误。
我想知道是否应该执行完整的开始事务/提交/回滚,以便如果选择语句发现小部件仍然存在,它将回滚删除 sql 语句。
但我有以下问题:
如何使用 pgadmin3 检查我的事务隔离级别的当前值是多少?
如果我将其保留为默认值 - 根据我所阅读的内容是“已提交的” - 这将在我完成删除和选择命令时锁定小部件表,对吗?这意味着在此事务完成之前,没有其他人可以从小部件表中进行选择,对吧?鉴于我将拥有数百名用户,这听起来不是一件好事。
任何意见/建议将不胜感激。