Method: ActiveRecord::ConnectionAdapters::PostgreSQL::ReferentialIntegrity#check_all_foreign_keys_valid!

Defined in:
activerecord/lib/active_record/connection_adapters/postgresql/referential_integrity.rb

#check_all_foreign_keys_valid!Object

:nodoc:



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'activerecord/lib/active_record/connection_adapters/postgresql/referential_integrity.rb', line 41

def check_all_foreign_keys_valid! # :nodoc:
  sql = "    do $$\n      declare r record;\n    BEGIN\n    FOR r IN (\n      SELECT FORMAT(\n        'UPDATE pg_constraint SET convalidated=false WHERE conname = ''%I'' AND connamespace::regnamespace = ''%I''::regnamespace; ALTER TABLE %I.%I VALIDATE CONSTRAINT %I;',\n        constraint_name,\n        table_schema,\n        table_schema,\n        table_name,\n        constraint_name\n      ) AS constraint_check\n      FROM information_schema.table_constraints WHERE constraint_type = 'FOREIGN KEY'\n    )\n      LOOP\n        EXECUTE (r.constraint_check);\n      END LOOP;\n    END;\n    $$;\n  SQL\n\n  transaction(requires_new: true) do\n    execute(sql)\n  end\nend\n"