【发布时间】:2013-04-25 15:11:20
【问题描述】:
我有一个网络应用程序,它提供删除属于用户的小部件的功能。 我现在进行删除的逻辑如下所示:
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 检查我的事务隔离级别的当前值是多少?
如果我将其保留为默认值 - 根据我所阅读的内容是“已提交的” - 这将在我完成删除和选择命令时锁定小部件表,对吗?这意味着在此事务完成之前,没有其他人可以从小部件表中进行选择,对吧?这听起来不是一件好事,因为我将拥有数百名用户。
任何 cmets / 建议将不胜感激。
【问题讨论】:
-
是 LuaSQL 吗?您可以提供/阅读文档吗?
executesqlandreturntable是什么? -
hjpotter92,我正在使用 luasql...但认为 postgresql 中的设置更相关,因为 luasql 只是 postgresql 的驱动程序。我想我看起来更好地理解“已提交”背后的原则
标签: postgresql transactions lua