Method: Baza::SqlQueries::MysqlUpsert#execute

Defined in:
lib/baza/sql_queries/mysql_upsert.rb

#executeObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/baza/sql_queries/mysql_upsert.rb', line 9

def execute
  procedure_name = "baza_upsert_#{SecureRandom.hex(5)}"

  sql = "CREATE PROCEDURE `#{@db.escape_table(procedure_name)}` () BEGIN\n"
  sql << "\tIF EXISTS(#{select_query}) THEN\n"
  sql << "\t\t#{update_sql};\n"
  sql << "\tELSE\n"
  sql << "\t\t#{insert_sql};\n"
  sql << "\tEND IF;\n"
  sql << "END;\n"

  @db.query(sql)

  begin
    @db.query("CALL `#{@db.escape_table(procedure_name)}`")
  ensure
    @db.query("DROP PROCEDURE `#{@db.escape_table(procedure_name)}`")
  end
end