Module: DataMapper::Constraints::Adapters::OracleAdapter

Includes:
DataObjectsAdapter
Defined in:
lib/dm-constraints/adapters/dm-oracle-adapter.rb

Instance Method Summary collapse

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

Returns:

  • (Boolean)

See Also:



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

See Also:

  • DataObjectsAdapter#create_constraints_statement


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