Module: DataMapper::Constraints::Adapters::OracleAdapter
- Includes:
- DataObjectsAdapter
- Defined in:
- lib/dm-constraints/adapters/dm-oracle-adapter.rb
Instance Method Summary collapse
-
#constraint_exists?(storage_name, constraint_name) ⇒ Boolean
private
oracle does not provide the information_schema table To question intenal state like postgres or mysql.
- #create_constraints_statement(storage_name, constraint_name, constraint_type, foreign_keys, reference_storage_name, reference_keys) ⇒ Object
- #destroy_constraints_statement(storage_name, constraint_name) ⇒ Object
Methods included from DataObjectsAdapter
#create_relationship_constraint, #destroy_relationship_constraint
Instance Method Details
#constraint_exists?(storage_name, constraint_name) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
oracle does not provide the information_schema table To question intenal state like postgres or mysql
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/dm-constraints/adapters/dm-oracle-adapter.rb', line 14 def constraint_exists?(storage_name, constraint_name) statement = DataMapper::Ext::String.compress_lines(<<-SQL) SELECT COUNT(*) FROM USER_CONSTRAINTS WHERE table_name = ? AND constraint_name = ? SQL select(statement, storage_name, constraint_name).first > 0 end |
#create_constraints_statement(storage_name, constraint_name, constraint_type, foreign_keys, reference_storage_name, reference_keys) ⇒ Object
27 28 29 30 31 32 33 34 35 |
# File 'lib/dm-constraints/adapters/dm-oracle-adapter.rb', line 27 def create_constraints_statement(storage_name, constraint_name, constraint_type, foreign_keys, reference_storage_name, reference_keys) DataMapper::Ext::String.compress_lines(<<-SQL) ALTER TABLE #{quote_name(storage_name)} ADD CONSTRAINT #{quote_name(constraint_name)} FOREIGN KEY (#{foreign_keys.join(', ')}) REFERENCES #{quote_name(reference_storage_name)} (#{reference_keys.join(', ')}) INITIALLY DEFERRED DEFERRABLE SQL end |
#destroy_constraints_statement(storage_name, constraint_name) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/dm-constraints/adapters/dm-oracle-adapter.rb', line 37 def destroy_constraints_statement(storage_name, constraint_name) DataMapper::Ext::String.compress_lines(<<-SQL) ALTER TABLE #{quote_name(storage_name)} DROP CONSTRAINT #{quote_name(constraint_name)} CASCADE SQL end |