提交 3378d77b 编写于 作者: A Aaron Patterson

use prepared statements to fetch the last insert id

上级 88636f71
...@@ -453,7 +453,7 @@ def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) ...@@ -453,7 +453,7 @@ def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil)
# If a pk is given, fallback to default sequence name. # If a pk is given, fallback to default sequence name.
# Don't fetch last insert id for a table without a pk. # Don't fetch last insert id for a table without a pk.
if pk && sequence_name ||= default_sequence_name(table, pk) if pk && sequence_name ||= default_sequence_name(table, pk)
last_insert_id(table, sequence_name) last_insert_id(sequence_name)
end end
end end
end end
...@@ -1038,8 +1038,9 @@ def configure_connection ...@@ -1038,8 +1038,9 @@ def configure_connection
end end
# Returns the current ID of a table's sequence. # Returns the current ID of a table's sequence.
def last_insert_id(table, sequence_name) #:nodoc: def last_insert_id(sequence_name) #:nodoc:
Integer(select_value("SELECT currval('#{sequence_name}')")) r = exec_query("SELECT currval($1)", 'SQL', [[nil, sequence_name]])
Integer(r.rows.first.first)
end end
# Executes a SELECT query and returns the results, performing any data type # Executes a SELECT query and returns the results, performing any data type
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册