oracle does not provide the information_schema table To question internal state like postgres or mysql
@see DataMapper::Constraints::Adapters::DataObjectsAdapter
@api private
# File lib/data_mapper/constraints/adapters/oracle_adapter.rb, line 16 def constraint_exists?(storage_name, constraint_name) statement = DataMapper::Ext::String.compress_lines( SELECT COUNT(*) FROM USER_CONSTRAINTS WHERE table_name = ? AND constraint_name = ?) select(statement, oracle_upcase(storage_name)[0, self.class::IDENTIFIER_MAX_LENGTH].gsub('"', '_'), oracle_upcase(constraint_name)[0, self.class::IDENTIFIER_MAX_LENGTH].gsub('"', '_')).first > 0 end
@see DataMapper::Constraints::Adapters::DataObjectsAdapter#create_constraints_statement
@api private
TODO: is it desirable to always set `INITIALLY DEFERRED DEFERRABLE`?
# File lib/data_mapper/constraints/adapters/oracle_adapter.rb, line 34 def create_constraints_statement(constraint_name, constraint_type, source_storage_name, source_keys, target_storage_name, target_keys) DataMapper::Ext::String.compress_lines( ALTER TABLE #{quote_name(source_storage_name)} ADD CONSTRAINT #{quote_name(constraint_name)} FOREIGN KEY (#{source_keys.join(', ')}) REFERENCES #{quote_name(target_storage_name)} (#{target_keys.join(', ')}) #{"ON DELETE " + constraint_type if constraint_type && constraint_type != "NO ACTION"} INITIALLY DEFERRED DEFERRABLE) end
@api private
# File lib/data_mapper/constraints/adapters/oracle_adapter.rb, line 46 def destroy_constraints_statement(storage_name, constraint_name) DataMapper::Ext::String.compress_lines( ALTER TABLE #{quote_name(storage_name)} DROP CONSTRAINT #{quote_name(constraint_name)} CASCADE) end
Generated with the Darkfish Rdoc Generator 2.