- add_limit!
- add_limit_offset!
- add_lock!
- begin_db_transaction
- commit_db_transaction
- default_sequence_name
- delete
- execute
- insert
- reset_sequence!
- rollback_db_transaction
- select
- select_all
- select_one
- select_value
- select_values
- transaction
- update
Alias for add_limit_offset!.
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 83
83: def add_limit!(sql, options)
84: add_limit_offset!(sql, options) if options
85: end
Appends LIMIT and OFFSET options to a SQL statement. This method modifies the sql parameter.
Examples
add_limit_offset!('SELECT * FROM suppliers', {:limit => 10, :offset => 50})
generates
SELECT * FROM suppliers LIMIT 10 OFFSET 50
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 93
93: def add_limit_offset!(sql, options)
94: if limit = options[:limit]
95: sql << " LIMIT #{limit}"
96: if offset = options[:offset]
97: sql << " OFFSET #{offset}"
98: end
99: end
100: end
Appends a locking clause to a SQL statement. *Modifies the sql parameter*.
# SELECT * FROM suppliers FOR UPDATE add_lock! 'SELECT * FROM suppliers', :lock => true add_lock! 'SELECT * FROM suppliers', :lock => ' FOR UPDATE'
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 106
106: def add_lock!(sql, options)
107: case lock = options[:lock]
108: when true: sql << ' FOR UPDATE'
109: when String: sql << " #{lock}"
110: end
111: end
Begins the transaction (and turns off auto-committing).
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 73
73: def begin_db_transaction() end
Commits the transaction (and turns on auto-committing).
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 76
76: def commit_db_transaction() end
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 113
113: def default_sequence_name(table, column)
114: nil
115: end
Executes the delete statement and returns the number of rows affected.
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 46
46: def delete(sql, name = nil)
47: update(sql, name)
48: end
Executes the SQL statement in the context of this connection.
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 31
31: def execute(sql, name = nil)
32: raise NotImplementedError, "execute is an abstract method"
33: end
Returns the last auto-generated ID from the affected table.
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 36
36: def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil)
37: raise NotImplementedError, "insert is an abstract method"
38: end
Set the sequence to the max value of the table‘s column.
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 118
118: def reset_sequence!(table, column, sequence = nil)
119: # Do nothing by default. Implement for PostgreSQL, Oracle, ...
120: end
Rolls back the transaction (and turns on auto-committing). Must be done if the transaction block raises an exception or returns false.
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 80
80: def rollback_db_transaction() end
Returns an array of record hashes with the column names as keys and column values as values.
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 6 6: def select_all(sql, name = nil) 7: select(sql, name) 8: end
Returns a record hash with the column names as keys and column values as values.
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 12
12: def select_one(sql, name = nil)
13: result = select(sql, name)
14: result.first if result
15: end
Returns a single value from a record
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 18
18: def select_value(sql, name = nil)
19: result = select_one(sql, name)
20: result.nil? ? nil : result.values.first
21: end
Returns an array of the values of the first column in a select:
select_values("SELECT id FROM companies LIMIT 3") => [1,2,3]
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 25
25: def select_values(sql, name = nil)
26: result = select_all(sql, name)
27: result.map{ |v| v.values.first }
28: end
Wrap a block in a transaction. Returns result of block.
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 51
51: def transaction(start_db_transaction = true)
52: transaction_open = false
53: begin
54: if block_given?
55: if start_db_transaction
56: begin_db_transaction
57: transaction_open = true
58: end
59: yield
60: end
61: rescue Exception => database_transaction_rollback
62: if transaction_open
63: transaction_open = false
64: rollback_db_transaction
65: end
66: raise
67: end
68: ensure
69: commit_db_transaction if transaction_open
70: end
Executes the update statement and returns the number of rows affected.
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 41
41: def update(sql, name = nil)
42: execute(sql, name)
43: end
Returns an array of record hashes with the column names as keys and column values as values.
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 125
125: def select(sql, name = nil)
126: raise NotImplementedError, "select is an abstract method"
127: end