Newer
Older
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
DO INSERT INTO sample_properties_history (id, samp_id, stpt_id, value, vocabulary_term, material, sample, pers_id_author, valid_from_timestamp, valid_until_timestamp, integer_array_value, real_array_value, string_array_value, timestamp_array_value, json_value)
VALUES (nextval('sample_property_id_seq'::regclass), old.samp_id, old.stpt_id, old.value, ( SELECT ((((t.code)::text || ' ['::text) || (v.code)::text) || ']'::text)
FROM (controlled_vocabulary_terms t
JOIN controlled_vocabularies v ON (((t.covo_id)::bigint = (v.id)::bigint)))
WHERE ((t.id)::bigint = (old.cvte_id)::bigint)), ( SELECT ((((m.code)::text || ' ['::text) || (mt.code)::text) || ']'::text)
FROM (materials m
JOIN material_types mt ON (((m.maty_id)::bigint = (mt.id)::bigint)))
WHERE ((m.id)::bigint = (old.mate_prop_id)::bigint)), ( SELECT samples_all.perm_id
FROM samples_all
WHERE ((samples_all.id)::bigint = (old.samp_prop_id)::bigint)), old.pers_id_author, old.modification_timestamp, new.modification_timestamp, old.integer_array_value, old.real_array_value, old.string_array_value, old.timestamp_array_value, old.json_value);
CREATE RULE sample_relationships_delete AS
ON DELETE TO sample_relationships DO INSTEAD DELETE FROM sample_relationships_all
WHERE ((sample_relationships_all.id)::bigint = (old.id)::bigint);
CREATE RULE sample_relationships_insert AS
ON INSERT TO sample_relationships DO INSTEAD INSERT INTO sample_relationships_all (id, sample_id_parent, parent_frozen, relationship_id, sample_id_child, child_frozen, pers_id_author, registration_timestamp, modification_timestamp, child_annotations, parent_annotations)
VALUES (new.id, new.sample_id_parent, new.parent_frozen, new.relationship_id, new.sample_id_child, new.child_frozen, new.pers_id_author, new.registration_timestamp, new.modification_timestamp, new.child_annotations, new.parent_annotations);
CREATE RULE sample_relationships_update AS
ON UPDATE TO sample_relationships DO INSTEAD UPDATE sample_relationships_all SET sample_id_parent = new.sample_id_parent, parent_frozen = new.parent_frozen, relationship_id = new.relationship_id, sample_id_child = new.sample_id_child, child_frozen = new.child_frozen, del_id = new.del_id, pers_id_author = new.pers_id_author, registration_timestamp = new.registration_timestamp, modification_timestamp = new.modification_timestamp, child_annotations = new.child_annotations, parent_annotations = new.parent_annotations
WHERE ((sample_relationships_all.id)::bigint = (new.id)::bigint);
CREATE RULE sample_shared_insert AS
ON INSERT TO samples_all
WHERE (new.space_id IS NULL) DO INSERT INTO sample_relationships_history (id, main_samp_id, relation_type, expe_id, pers_id_author, valid_from_timestamp)
VALUES (nextval('sample_relationships_history_id_seq'::regclass), new.id, 'OWNED'::text, new.expe_id, new.pers_id_modifier, new.modification_timestamp);
CREATE RULE sample_shared_remove_update AS
ON UPDATE TO samples_all
WHERE ((old.space_id IS NULL) AND (new.space_id IS NOT NULL)) DO UPDATE sample_relationships_history SET valid_until_timestamp = new.modification_timestamp
WHERE (((sample_relationships_history.main_samp_id)::bigint = (old.id)::bigint) AND (sample_relationships_history.space_id IS NULL) AND (sample_relationships_history.entity_perm_id IS NULL) AND (sample_relationships_history.proj_id IS NULL) AND (sample_relationships_history.expe_id IS NULL) AND (sample_relationships_history.valid_until_timestamp IS NULL));
CREATE RULE sample_shared_update AS
ON UPDATE TO samples_all
WHERE ((old.space_id IS NOT NULL) AND (new.space_id IS NULL)) DO ( UPDATE sample_relationships_history SET valid_until_timestamp = new.modification_timestamp
WHERE (((sample_relationships_history.main_samp_id)::bigint = (old.id)::bigint) AND ((sample_relationships_history.space_id)::bigint = (old.space_id)::bigint) AND (sample_relationships_history.valid_until_timestamp IS NULL));
INSERT INTO sample_relationships_history (id, main_samp_id, relation_type, space_id, entity_perm_id, pers_id_author, valid_from_timestamp)
VALUES (nextval('sample_relationships_history_id_seq'::regclass), new.id, 'OWNED'::text, new.space_id, NULL::text, new.pers_id_modifier, new.modification_timestamp);
);
CREATE RULE sample_space_insert AS
ON INSERT TO samples_all
WHERE ((new.expe_id IS NULL) AND (new.space_id IS NOT NULL) AND (new.proj_id IS NULL)) DO INSERT INTO sample_relationships_history (id, main_samp_id, relation_type, space_id, entity_kind, entity_perm_id, pers_id_author, valid_from_timestamp)
VALUES (nextval('sample_relationships_history_id_seq'::regclass), new.id, 'OWNED'::text, new.space_id, 'SPACE'::text, ( SELECT spaces.code
FROM spaces
WHERE ((spaces.id)::bigint = (new.space_id)::bigint)), new.pers_id_modifier, new.modification_timestamp);
CREATE RULE sample_space_remove_update AS
ON UPDATE TO samples_all
WHERE ((old.space_id IS NOT NULL) AND ((new.space_id IS NULL) OR ((old.expe_id IS NULL) AND (new.expe_id IS NOT NULL)) OR ((old.proj_id IS NULL) AND (new.proj_id IS NOT NULL)))) DO UPDATE sample_relationships_history SET valid_until_timestamp = new.modification_timestamp
WHERE (((sample_relationships_history.main_samp_id)::bigint = (old.id)::bigint) AND ((sample_relationships_history.space_id)::bigint = (old.space_id)::bigint) AND (sample_relationships_history.valid_until_timestamp IS NULL));
CREATE RULE sample_space_update AS
ON UPDATE TO samples_all
WHERE ((((old.space_id)::bigint <> (new.space_id)::bigint) OR (old.space_id IS NULL) OR (old.expe_id IS NOT NULL) OR (old.proj_id IS NOT NULL)) AND (new.space_id IS NOT NULL) AND (new.expe_id IS NULL) AND (new.proj_id IS NULL)) DO ( UPDATE sample_relationships_history SET valid_until_timestamp = new.modification_timestamp
WHERE (((sample_relationships_history.main_samp_id)::bigint = (old.id)::bigint) AND ((sample_relationships_history.space_id)::bigint = (old.space_id)::bigint) AND (sample_relationships_history.valid_until_timestamp IS NULL));
INSERT INTO sample_relationships_history (id, main_samp_id, relation_type, space_id, entity_kind, entity_perm_id, pers_id_author, valid_from_timestamp)
VALUES (nextval('sample_relationships_history_id_seq'::regclass), new.id, 'OWNED'::text, new.space_id, 'SPACE'::text, ( SELECT spaces.code
FROM spaces
WHERE ((spaces.id)::bigint = (new.space_id)::bigint)), new.pers_id_modifier, new.modification_timestamp);
);
CREATE RULE sample_update AS
Adam Laskowski
committed
ON UPDATE TO samples DO INSTEAD UPDATE samples_all SET code = new.code, frozen = new.frozen, frozen_for_comp = new.frozen_for_comp, frozen_for_children = new.frozen_for_children, frozen_for_parents = new.frozen_for_parents, frozen_for_data = new.frozen_for_data, del_id = new.del_id, orig_del = new.orig_del, expe_id = new.expe_id, expe_frozen = new.expe_frozen, proj_id = new.proj_id, proj_frozen = new.proj_frozen, modification_timestamp = new.modification_timestamp, perm_id = new.perm_id, pers_id_registerer = new.pers_id_registerer, pers_id_modifier = new.pers_id_modifier, registration_timestamp = new.registration_timestamp, samp_id_part_of = new.samp_id_part_of, cont_frozen = new.cont_frozen, saty_id = new.saty_id, space_id = new.space_id, space_frozen = new.space_frozen, version = new.version, meta_data = new.meta_data
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
WHERE ((samples_all.id)::bigint = (new.id)::bigint);
CREATE TRIGGER add_data_set_to_experiment_check AFTER INSERT ON data_all FOR EACH ROW WHEN (new.expe_frozen) EXECUTE PROCEDURE raise_exception_frozen_experiment_relationship('data set');
CREATE TRIGGER add_data_set_to_sample_check AFTER INSERT ON data_all FOR EACH ROW WHEN (new.samp_frozen) EXECUTE PROCEDURE raise_exception_frozen_data_set_sample_relationship();
CREATE TRIGGER add_experiment_to_project_check AFTER INSERT ON experiments_all FOR EACH ROW WHEN (new.proj_frozen) EXECUTE PROCEDURE raise_exception_frozen_project_relationship('experiment');
CREATE TRIGGER add_project_to_space_check AFTER INSERT ON projects FOR EACH ROW WHEN (new.space_frozen) EXECUTE PROCEDURE raise_exception_frozen_space_relationship('project');
CREATE TRIGGER add_sample_to_container_check AFTER INSERT ON samples_all FOR EACH ROW WHEN (new.cont_frozen) EXECUTE PROCEDURE raise_exception_frozen_sample_container_relationship();
CREATE TRIGGER add_sample_to_experiment_check AFTER INSERT ON samples_all FOR EACH ROW WHEN (new.expe_frozen) EXECUTE PROCEDURE raise_exception_frozen_experiment_relationship('sample');
CREATE TRIGGER add_sample_to_project_check AFTER INSERT ON samples_all FOR EACH ROW WHEN (new.proj_frozen) EXECUTE PROCEDURE raise_exception_frozen_project_relationship('sample');
CREATE TRIGGER add_sample_to_space_check AFTER INSERT ON samples_all FOR EACH ROW WHEN (new.space_frozen) EXECUTE PROCEDURE raise_exception_frozen_space_relationship('sample');
CREATE CONSTRAINT TRIGGER check_created_or_modified_data_set_owner_is_alive AFTER INSERT OR UPDATE ON data_all DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE check_created_or_modified_data_set_owner_is_alive();
CREATE CONSTRAINT TRIGGER check_created_or_modified_sample_owner_is_alive AFTER INSERT OR UPDATE ON samples_all DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE check_created_or_modified_sample_owner_is_alive();
CREATE CONSTRAINT TRIGGER check_data_set_kind_link AFTER INSERT OR UPDATE ON link_data DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE check_data_set_kind_link();
CREATE CONSTRAINT TRIGGER check_data_set_kind_physical AFTER INSERT OR UPDATE ON external_data DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE check_data_set_kind_physical();
CREATE CONSTRAINT TRIGGER check_deletion_consistency_on_experiment_deletion AFTER UPDATE ON experiments_all DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE check_deletion_consistency_on_experiment_deletion();
CREATE CONSTRAINT TRIGGER check_deletion_consistency_on_sample_deletion AFTER UPDATE ON samples_all DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE check_deletion_consistency_on_sample_deletion();
CREATE TRIGGER content_copies_location_type_check BEFORE INSERT OR UPDATE ON content_copies FOR EACH ROW EXECUTE PROCEDURE content_copies_location_type_check();
CREATE TRIGGER content_copies_uniqueness_check BEFORE INSERT OR UPDATE ON content_copies FOR EACH ROW EXECUTE PROCEDURE content_copies_uniqueness_check();
CREATE TRIGGER controlled_vocabulary_check BEFORE INSERT OR UPDATE ON property_types FOR EACH ROW EXECUTE PROCEDURE controlled_vocabulary_check();
CREATE TRIGGER data_all_tsvector_document BEFORE INSERT OR UPDATE ON data_all FOR EACH ROW EXECUTE PROCEDURE data_all_tsvector_document_trigger();
CREATE TRIGGER data_exp_or_sample_link_check BEFORE INSERT OR UPDATE ON data_all FOR EACH ROW EXECUTE PROCEDURE data_exp_or_sample_link_check();
CREATE TRIGGER data_set_experiment_relationship_frozen_check_on_update BEFORE UPDATE ON data_all FOR EACH ROW WHEN (((((new.expe_id)::bigint <> (old.expe_id)::bigint) OR ((new.expe_id IS NOT NULL) AND (old.expe_id IS NULL)) OR ((new.expe_id IS NULL) AND (old.expe_id IS NOT NULL))) AND (new.expe_frozen OR old.expe_frozen))) EXECUTE PROCEDURE raise_exception_frozen_experiment_relationship('data set');
CREATE TRIGGER data_set_frozen_check_on_change_property BEFORE UPDATE ON data_set_properties FOR EACH ROW WHEN ((old.dase_frozen AND new.dase_frozen)) EXECUTE PROCEDURE raise_exception_frozen_data_set('PROPERTY');
CREATE TRIGGER data_set_frozen_check_on_delete BEFORE DELETE ON data_all FOR EACH ROW WHEN (old.frozen) EXECUTE PROCEDURE raise_exception_frozen_entity_by_code('DELETE', 'data set');
CREATE TRIGGER data_set_frozen_check_on_delete_property BEFORE DELETE ON data_set_properties FOR EACH ROW WHEN (old.dase_frozen) EXECUTE PROCEDURE raise_exception_frozen_data_set('PROPERTY');
CREATE TRIGGER data_set_frozen_check_on_insert_property BEFORE INSERT ON data_set_properties FOR EACH ROW WHEN (new.dase_frozen) EXECUTE PROCEDURE raise_exception_frozen_data_set('PROPERTY');
CREATE TRIGGER data_set_frozen_check_on_trash BEFORE UPDATE ON data_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.frozen)) EXECUTE PROCEDURE raise_exception_frozen_entity_by_code('TRASH', 'data set');
CREATE TRIGGER data_set_properties_tsvector_document BEFORE INSERT OR UPDATE ON data_set_properties FOR EACH ROW EXECUTE PROCEDURE properties_tsvector_document_trigger();
CREATE TRIGGER data_set_property_with_material_data_type_check BEFORE INSERT OR UPDATE ON data_set_properties FOR EACH ROW EXECUTE PROCEDURE data_set_property_with_material_data_type_check();
CREATE TRIGGER data_set_relationship_frozen_check_on_delete BEFORE DELETE ON data_set_relationships_all FOR EACH ROW WHEN ((old.parent_frozen OR old.child_frozen OR old.cont_frozen OR old.comp_frozen)) EXECUTE PROCEDURE raise_exception_frozen_data_set_relationship();
CREATE TRIGGER data_set_relationship_frozen_check_on_insert BEFORE INSERT ON data_set_relationships_all FOR EACH ROW WHEN ((new.parent_frozen OR new.child_frozen OR new.cont_frozen OR new.comp_frozen)) EXECUTE PROCEDURE raise_exception_frozen_data_set_relationship();
CREATE TRIGGER data_set_sample_relationship_frozen_check_on_update BEFORE UPDATE ON data_all FOR EACH ROW WHEN (((((new.samp_id)::bigint <> (old.samp_id)::bigint) OR ((new.samp_id IS NOT NULL) AND (old.samp_id IS NULL)) OR ((new.samp_id IS NULL) AND (old.samp_id IS NOT NULL))) AND (new.samp_frozen OR old.samp_frozen))) EXECUTE PROCEDURE raise_exception_frozen_data_set_sample_relationship();
CREATE TRIGGER delete_data_set_from_experiment_check AFTER DELETE ON data_all FOR EACH ROW WHEN (old.expe_frozen) EXECUTE PROCEDURE raise_delete_from_experiment_exception('DATA SET');
CREATE TRIGGER delete_data_set_from_sample_check AFTER DELETE ON data_all FOR EACH ROW WHEN (old.samp_frozen) EXECUTE PROCEDURE raise_delete_from_sample_exception('DATA SET');
CREATE TRIGGER delete_experiment_from_project_check AFTER DELETE ON experiments_all FOR EACH ROW WHEN (old.proj_frozen) EXECUTE PROCEDURE raise_delete_from_project_exception('EXPERIMENT');
CREATE TRIGGER delete_project_from_space_check AFTER DELETE ON projects FOR EACH ROW WHEN (old.space_frozen) EXECUTE PROCEDURE raise_delete_from_space_exception('PROJECT');
CREATE TRIGGER delete_sample_from_container_check AFTER DELETE ON samples_all FOR EACH ROW WHEN (old.cont_frozen) EXECUTE PROCEDURE raise_delete_from_sample_exception('SAMPLE COMPONENT');
CREATE TRIGGER delete_sample_from_experiment_check AFTER DELETE ON samples_all FOR EACH ROW WHEN (old.expe_frozen) EXECUTE PROCEDURE raise_delete_from_experiment_exception('SAMPLE');
CREATE TRIGGER delete_sample_from_project_check AFTER DELETE ON samples_all FOR EACH ROW WHEN (old.proj_frozen) EXECUTE PROCEDURE raise_delete_from_project_exception('SAMPLE');
CREATE TRIGGER delete_sample_from_space_check AFTER DELETE ON samples_all FOR EACH ROW WHEN (old.space_frozen) EXECUTE PROCEDURE raise_delete_from_space_exception('SAMPLE');
CREATE TRIGGER disable_project_level_samples BEFORE INSERT OR UPDATE ON samples_all FOR EACH ROW EXECUTE PROCEDURE disable_project_level_samples();
CREATE TRIGGER experiment_frozen_check_on_change_property BEFORE UPDATE ON experiment_properties FOR EACH ROW WHEN ((old.expe_frozen AND new.expe_frozen)) EXECUTE PROCEDURE raise_exception_frozen_experiment('PROPERTY');
CREATE TRIGGER experiment_frozen_check_on_delete BEFORE DELETE ON experiments_all FOR EACH ROW WHEN (old.frozen) EXECUTE PROCEDURE raise_exception_frozen_entity_by_code('DELETE', 'experiment');
CREATE TRIGGER experiment_frozen_check_on_delete_attachment BEFORE DELETE ON attachments FOR EACH ROW WHEN (old.expe_frozen) EXECUTE PROCEDURE raise_exception_frozen_experiment('ATTACHMENT');
CREATE TRIGGER experiment_frozen_check_on_delete_property BEFORE DELETE ON experiment_properties FOR EACH ROW WHEN (old.expe_frozen) EXECUTE PROCEDURE raise_exception_frozen_experiment('PROPERTY');
CREATE TRIGGER experiment_frozen_check_on_insert_attachment BEFORE INSERT ON attachments FOR EACH ROW WHEN (new.expe_frozen) EXECUTE PROCEDURE raise_exception_frozen_experiment('ATTACHMENT');
CREATE TRIGGER experiment_frozen_check_on_insert_property BEFORE INSERT ON experiment_properties FOR EACH ROW WHEN (new.expe_frozen) EXECUTE PROCEDURE raise_exception_frozen_experiment('PROPERTY');
CREATE TRIGGER experiment_frozen_check_on_trash BEFORE UPDATE ON experiments_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.frozen)) EXECUTE PROCEDURE raise_exception_frozen_entity_by_code('TRASH', 'experiment');
CREATE TRIGGER experiment_frozen_check_on_update_attachment BEFORE UPDATE ON attachments FOR EACH ROW WHEN ((old.expe_frozen AND new.expe_frozen)) EXECUTE PROCEDURE raise_exception_frozen_experiment('ATTACHMENT');
CREATE TRIGGER experiment_project_relationship_frozen_check BEFORE UPDATE ON experiments_all FOR EACH ROW WHEN ((((new.proj_id)::bigint <> (old.proj_id)::bigint) AND (new.proj_frozen OR old.proj_frozen))) EXECUTE PROCEDURE raise_exception_frozen_project_relationship('experiment');
CREATE TRIGGER experiment_properties_tsvector_document BEFORE INSERT OR UPDATE ON experiment_properties FOR EACH ROW EXECUTE PROCEDURE properties_tsvector_document_trigger();
CREATE TRIGGER experiment_property_with_material_data_type_check BEFORE INSERT OR UPDATE ON experiment_properties FOR EACH ROW EXECUTE PROCEDURE experiment_property_with_material_data_type_check();
CREATE TRIGGER experiments_all_in_project_tsvector_document AFTER UPDATE ON projects FOR EACH ROW EXECUTE PROCEDURE experiments_all_in_project_tsvector_document_trigger();
CREATE TRIGGER experiments_all_tsvector_document BEFORE INSERT OR UPDATE ON experiments_all FOR EACH ROW EXECUTE PROCEDURE experiments_all_tsvector_document_trigger();
CREATE TRIGGER external_data_storage_format_check BEFORE INSERT OR UPDATE ON external_data FOR EACH ROW EXECUTE PROCEDURE external_data_storage_format_check();
CREATE TRIGGER material_properties_tsvector_document BEFORE INSERT OR UPDATE ON material_properties FOR EACH ROW EXECUTE PROCEDURE properties_tsvector_document_trigger();
CREATE TRIGGER material_property_with_material_data_type_check BEFORE INSERT OR UPDATE ON material_properties FOR EACH ROW EXECUTE PROCEDURE material_property_with_material_data_type_check();
CREATE TRIGGER materials_tsvector_document BEFORE INSERT OR UPDATE ON materials FOR EACH ROW EXECUTE PROCEDURE materials_tsvector_document_trigger();
CREATE TRIGGER melt_data_set_for BEFORE UPDATE ON data_all FOR EACH ROW WHEN (((new.frozen_for_children OR new.frozen_for_parents OR new.frozen_for_comps OR new.frozen_for_conts) AND (NOT new.frozen))) EXECUTE PROCEDURE melt_data_set_for();
CREATE TRIGGER melt_experiment_for BEFORE UPDATE ON experiments_all FOR EACH ROW WHEN (((new.frozen_for_samp OR new.frozen_for_data) AND (NOT new.frozen))) EXECUTE PROCEDURE melt_experiment_for();
CREATE TRIGGER melt_project_for BEFORE UPDATE ON projects FOR EACH ROW WHEN (((new.frozen_for_exp OR new.frozen_for_samp) AND (NOT new.frozen))) EXECUTE PROCEDURE melt_project_for();
CREATE TRIGGER melt_sample_for BEFORE UPDATE ON samples_all FOR EACH ROW WHEN (((new.frozen_for_comp OR new.frozen_for_children OR new.frozen_for_parents OR new.frozen_for_data) AND (NOT new.frozen))) EXECUTE PROCEDURE melt_sample_for();
CREATE TRIGGER melt_space_for BEFORE UPDATE ON spaces FOR EACH ROW WHEN (((new.frozen_for_proj OR new.frozen_for_samp) AND (NOT new.frozen))) EXECUTE PROCEDURE melt_space_for();
CREATE TRIGGER preserve_deletion_consistency_on_data_set_relationships BEFORE UPDATE ON data_set_relationships_all FOR EACH ROW EXECUTE PROCEDURE preserve_deletion_consistency_on_data_set_relationships();
CREATE TRIGGER preserve_deletion_consistency_on_sample_relationships BEFORE UPDATE ON sample_relationships_all FOR EACH ROW EXECUTE PROCEDURE preserve_deletion_consistency_on_sample_relationships();
CREATE TRIGGER project_frozen_check_on_delete BEFORE DELETE ON projects FOR EACH ROW WHEN (old.frozen) EXECUTE PROCEDURE raise_exception_frozen_entity_by_code('DELETE', 'project');
CREATE TRIGGER project_frozen_check_on_delete_attachment BEFORE DELETE ON attachments FOR EACH ROW WHEN (old.proj_frozen) EXECUTE PROCEDURE raise_exception_frozen_project('ATTACHMENT');
CREATE TRIGGER project_frozen_check_on_insert_attachment BEFORE INSERT ON attachments FOR EACH ROW WHEN (new.proj_frozen) EXECUTE PROCEDURE raise_exception_frozen_project('ATTACHMENT');
CREATE TRIGGER project_frozen_check_on_update BEFORE UPDATE ON projects FOR EACH ROW WHEN ((old.frozen AND new.frozen AND (((old.description)::text <> (new.description)::text) OR ((old.description IS NULL) AND (new.description IS NOT NULL)) OR ((old.description IS NOT NULL) AND (new.description IS NULL))))) EXECUTE PROCEDURE raise_exception_frozen_entity_by_code('UPDATE', 'project');
CREATE TRIGGER project_frozen_check_on_update_attachment BEFORE UPDATE ON attachments FOR EACH ROW WHEN ((old.proj_frozen AND new.proj_frozen)) EXECUTE PROCEDURE raise_exception_frozen_project('ATTACHMENT');
CREATE TRIGGER project_space_relationship_frozen_check BEFORE UPDATE ON projects FOR EACH ROW WHEN ((((new.space_id)::bigint <> (old.space_id)::bigint) AND (new.space_frozen OR old.space_frozen))) EXECUTE PROCEDURE raise_exception_frozen_space_relationship('project');
CREATE TRIGGER sample_experiment_relationship_frozen_check BEFORE UPDATE ON samples_all FOR EACH ROW WHEN (((((new.expe_id)::bigint <> (old.expe_id)::bigint) OR ((new.expe_id IS NOT NULL) AND (old.expe_id IS NULL)) OR ((new.expe_id IS NULL) AND (old.expe_id IS NOT NULL))) AND (new.expe_frozen OR old.expe_frozen))) EXECUTE PROCEDURE raise_exception_frozen_experiment_relationship('sample');
CREATE TRIGGER sample_fill_code_unique_check BEFORE INSERT OR UPDATE ON samples_all FOR EACH ROW EXECUTE PROCEDURE sample_fill_code_unique_check();
CREATE TRIGGER sample_fill_subcode_unique_check BEFORE INSERT OR UPDATE ON samples_all FOR EACH ROW EXECUTE PROCEDURE sample_fill_subcode_unique_check();
CREATE TRIGGER sample_frozen_check_on_change_property BEFORE UPDATE ON sample_properties FOR EACH ROW WHEN ((old.samp_frozen AND new.samp_frozen)) EXECUTE PROCEDURE raise_exception_frozen_sample('PROPERTY');
CREATE TRIGGER sample_frozen_check_on_delete BEFORE DELETE ON samples_all FOR EACH ROW WHEN (old.frozen) EXECUTE PROCEDURE raise_exception_frozen_entity_by_code('DELETE', 'sample');
CREATE TRIGGER sample_frozen_check_on_delete_attachment BEFORE DELETE ON attachments FOR EACH ROW WHEN (old.samp_frozen) EXECUTE PROCEDURE raise_exception_frozen_sample('ATTACHMENT');
CREATE TRIGGER sample_frozen_check_on_delete_property BEFORE DELETE ON sample_properties FOR EACH ROW WHEN (old.samp_frozen) EXECUTE PROCEDURE raise_exception_frozen_sample('PROPERTY');
CREATE TRIGGER sample_frozen_check_on_insert_attachment BEFORE INSERT ON attachments FOR EACH ROW WHEN (new.samp_frozen) EXECUTE PROCEDURE raise_exception_frozen_sample('ATTACHMENT');
CREATE TRIGGER sample_frozen_check_on_insert_property BEFORE INSERT ON sample_properties FOR EACH ROW WHEN (new.samp_frozen) EXECUTE PROCEDURE raise_exception_frozen_sample('PROPERTY');
CREATE TRIGGER sample_frozen_check_on_set_container BEFORE UPDATE ON samples_all FOR EACH ROW WHEN (((((new.samp_id_part_of)::bigint <> (old.samp_id_part_of)::bigint) OR ((new.samp_id_part_of IS NOT NULL) AND (old.samp_id_part_of IS NULL)) OR ((new.samp_id_part_of IS NULL) AND (old.samp_id_part_of IS NOT NULL))) AND (new.cont_frozen OR old.cont_frozen))) EXECUTE PROCEDURE raise_exception_frozen_sample_container_relationship();
CREATE TRIGGER sample_frozen_check_on_trash BEFORE UPDATE ON samples_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.frozen)) EXECUTE PROCEDURE raise_exception_frozen_entity_by_code('TRASH', 'sample');
CREATE TRIGGER sample_frozen_check_on_update_attachment BEFORE UPDATE ON attachments FOR EACH ROW WHEN ((old.samp_frozen AND new.samp_frozen)) EXECUTE PROCEDURE raise_exception_frozen_sample('ATTACHMENT');
CREATE TRIGGER sample_project_relationship_frozen_check BEFORE UPDATE ON samples_all FOR EACH ROW WHEN (((((new.proj_id)::bigint <> (old.proj_id)::bigint) OR ((new.proj_id IS NOT NULL) AND (old.proj_id IS NULL)) OR ((new.proj_id IS NULL) AND (old.proj_id IS NOT NULL))) AND (new.proj_frozen OR old.proj_frozen))) EXECUTE PROCEDURE raise_exception_frozen_project_relationship('sample');
CREATE TRIGGER sample_properties_tsvector_document BEFORE INSERT OR UPDATE ON sample_properties FOR EACH ROW EXECUTE PROCEDURE properties_tsvector_document_trigger();
CREATE TRIGGER sample_property_with_material_data_type_check BEFORE INSERT OR UPDATE ON sample_properties FOR EACH ROW EXECUTE PROCEDURE sample_property_with_material_data_type_check();
CREATE TRIGGER sample_relationship_frozen_check_on_delete BEFORE DELETE ON sample_relationships_all FOR EACH ROW WHEN ((old.parent_frozen OR old.child_frozen)) EXECUTE PROCEDURE raise_exception_frozen_sample_relationship();
CREATE TRIGGER sample_relationship_frozen_check_on_insert BEFORE INSERT ON sample_relationships_all FOR EACH ROW WHEN ((new.parent_frozen OR new.child_frozen)) EXECUTE PROCEDURE raise_exception_frozen_sample_relationship();
CREATE TRIGGER sample_space_relationship_frozen_check BEFORE UPDATE ON samples_all FOR EACH ROW WHEN (((((new.space_id)::bigint <> (old.space_id)::bigint) OR ((new.space_id IS NOT NULL) AND (old.space_id IS NULL)) OR ((new.space_id IS NULL) AND (old.space_id IS NOT NULL))) AND (new.space_frozen OR old.space_frozen))) EXECUTE PROCEDURE raise_exception_frozen_space_relationship('sample');
CREATE TRIGGER sample_type_fill_subcode_unique_check AFTER UPDATE ON sample_types FOR EACH ROW EXECUTE PROCEDURE sample_type_fill_subcode_unique_check();
CREATE TRIGGER samples_all_tsvector_document BEFORE INSERT OR UPDATE ON samples_all FOR EACH ROW EXECUTE PROCEDURE samples_all_tsvector_document_trigger();
CREATE TRIGGER space_frozen_check_on_delete BEFORE DELETE ON spaces FOR EACH ROW WHEN (old.frozen) EXECUTE PROCEDURE raise_exception_frozen_entity_by_code('DELETE', 'space');
CREATE TRIGGER space_frozen_check_on_update BEFORE UPDATE ON spaces FOR EACH ROW WHEN ((old.frozen AND new.frozen AND (((old.description)::text <> (new.description)::text) OR ((old.description IS NULL) AND (new.description IS NOT NULL)) OR ((old.description IS NOT NULL) AND (new.description IS NULL))))) EXECUTE PROCEDURE raise_exception_frozen_entity_by_code('UPDATE', 'space');
CREATE TRIGGER trash_data_set_from_child_check AFTER UPDATE ON data_set_relationships_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.child_frozen)) EXECUTE PROCEDURE raise_delete_from_data_set_exception('DATA SET PARENT');
CREATE TRIGGER trash_data_set_from_component_check AFTER UPDATE ON data_set_relationships_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.comp_frozen)) EXECUTE PROCEDURE raise_delete_from_data_set_exception('DATA SET CONTAINER');
CREATE TRIGGER trash_data_set_from_container_check AFTER UPDATE ON data_set_relationships_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.cont_frozen)) EXECUTE PROCEDURE raise_delete_from_data_set_exception('DATA SET COMPONENT');
CREATE TRIGGER trash_data_set_from_experiment_check AFTER UPDATE ON data_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.expe_frozen)) EXECUTE PROCEDURE raise_delete_from_experiment_exception('DATA SET');
CREATE TRIGGER trash_data_set_from_parent_check AFTER UPDATE ON data_set_relationships_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.parent_frozen)) EXECUTE PROCEDURE raise_delete_from_data_set_exception('DATA SET CHILD');
CREATE TRIGGER trash_data_set_from_sample_check AFTER UPDATE ON data_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.samp_frozen)) EXECUTE PROCEDURE raise_delete_from_sample_exception('DATA SET');
CREATE TRIGGER trash_experiment_from_project_check AFTER UPDATE ON experiments_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.proj_frozen)) EXECUTE PROCEDURE raise_delete_from_project_exception('EXPERIMENT');
CREATE TRIGGER trash_sample_from_child_check AFTER UPDATE ON sample_relationships_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.child_frozen)) EXECUTE PROCEDURE raise_delete_from_sample_exception('SAMPLE PARENT');
CREATE TRIGGER trash_sample_from_container_check AFTER UPDATE ON samples_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.cont_frozen)) EXECUTE PROCEDURE raise_delete_from_sample_exception('SAMPLE COMPONENT');
CREATE TRIGGER trash_sample_from_experiment_check AFTER UPDATE ON samples_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.expe_frozen)) EXECUTE PROCEDURE raise_delete_from_experiment_exception('SAMPLE');
CREATE TRIGGER trash_sample_from_parent_check AFTER UPDATE ON sample_relationships_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.parent_frozen)) EXECUTE PROCEDURE raise_delete_from_sample_exception('SAMPLE CHILD');
CREATE TRIGGER trash_sample_from_project_check AFTER UPDATE ON samples_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.proj_frozen)) EXECUTE PROCEDURE raise_delete_from_project_exception('SAMPLE');
CREATE TRIGGER trash_sample_from_space_check AFTER UPDATE ON samples_all FOR EACH ROW WHEN (((new.del_id IS NOT NULL) AND (old.del_id IS NULL) AND old.space_frozen)) EXECUTE PROCEDURE raise_delete_from_space_exception('SAMPLE');
ALTER TABLE ONLY authorization_groups
ADD CONSTRAINT ag_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY authorization_group_persons
ADD CONSTRAINT agp_ag_fk FOREIGN KEY (ag_id) REFERENCES authorization_groups(id);
ALTER TABLE ONLY authorization_group_persons
ADD CONSTRAINT agp_pers_fk FOREIGN KEY (pers_id) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY attachments
ADD CONSTRAINT atta_cont_fk FOREIGN KEY (exac_id) REFERENCES attachment_contents(id);
ALTER TABLE ONLY attachments
ADD CONSTRAINT atta_expe_fk FOREIGN KEY (expe_id, expe_frozen) REFERENCES experiments_all(id, frozen) ON UPDATE CASCADE;
ALTER TABLE ONLY attachments
ADD CONSTRAINT atta_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY attachments
ADD CONSTRAINT atta_proj_fk FOREIGN KEY (proj_id, proj_frozen) REFERENCES projects(id, frozen) ON UPDATE CASCADE;
ALTER TABLE ONLY attachments
ADD CONSTRAINT atta_samp_fk FOREIGN KEY (samp_id, samp_frozen) REFERENCES samples_all(id, frozen) ON UPDATE CASCADE;
ALTER TABLE ONLY content_copies
ADD CONSTRAINT coco_data_fk FOREIGN KEY (data_id, data_frozen) REFERENCES link_data(id, data_frozen) ON UPDATE CASCADE;
ALTER TABLE ONLY content_copies
ADD CONSTRAINT coco_edms_fk FOREIGN KEY (edms_id) REFERENCES external_data_management_systems(id);
ALTER TABLE ONLY controlled_vocabularies
ADD CONSTRAINT covo_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY controlled_vocabulary_terms
ADD CONSTRAINT cvte_covo_fk FOREIGN KEY (covo_id) REFERENCES controlled_vocabularies(id);
ALTER TABLE ONLY controlled_vocabulary_terms
ADD CONSTRAINT cvte_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY data_all
ADD CONSTRAINT data_dast_fk FOREIGN KEY (dast_id) REFERENCES data_stores(id);
ALTER TABLE ONLY data_all
ADD CONSTRAINT data_del_fk FOREIGN KEY (del_id) REFERENCES deletions(id);
ALTER TABLE ONLY data_all
ADD CONSTRAINT data_dsty_fk FOREIGN KEY (dsty_id) REFERENCES data_set_types(id);
ALTER TABLE ONLY data_all
ADD CONSTRAINT data_expe_fk FOREIGN KEY (expe_id, expe_frozen) REFERENCES experiments_all(id, frozen_for_data) ON UPDATE CASCADE;
ALTER TABLE ONLY data_all
ADD CONSTRAINT data_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY data_all
ADD CONSTRAINT data_pers_fk_mod FOREIGN KEY (pers_id_modifier) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY data_all
ADD CONSTRAINT data_samp_fk FOREIGN KEY (samp_id, samp_frozen) REFERENCES samples_all(id, frozen_for_data) ON UPDATE CASCADE;
ALTER TABLE ONLY data_set_properties
ADD CONSTRAINT data_set_properties_unique_fk FOREIGN KEY (dstpt_id, is_unique) REFERENCES data_set_type_property_types(id, is_unique) ON DELETE CASCADE;
ALTER TABLE ONLY data_set_relationships_all
ADD CONSTRAINT data_set_relationships_pers_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY data_set_relationships_history
ADD CONSTRAINT datarelh_auth_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY data_set_relationships_history
ADD CONSTRAINT datarelh_data_fk FOREIGN KEY (data_id) REFERENCES data_all(id) ON DELETE SET NULL;
ALTER TABLE ONLY data_set_relationships_history
ADD CONSTRAINT datarelh_expe_fk FOREIGN KEY (expe_id) REFERENCES experiments_all(id) ON DELETE SET NULL;
ALTER TABLE ONLY data_set_relationships_history
ADD CONSTRAINT datarelh_main_data_fk FOREIGN KEY (main_data_id) REFERENCES data_all(id) ON DELETE CASCADE;
ALTER TABLE ONLY data_set_relationships_history
ADD CONSTRAINT datarelh_samp_fk FOREIGN KEY (samp_id) REFERENCES samples_all(id) ON DELETE SET NULL;
ALTER TABLE ONLY deletions
ADD CONSTRAINT del_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY data_set_properties
ADD CONSTRAINT dspr_auth_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY data_set_properties
ADD CONSTRAINT dspr_cvte_fk FOREIGN KEY (cvte_id) REFERENCES controlled_vocabulary_terms(id);
ALTER TABLE ONLY data_set_properties
ADD CONSTRAINT dspr_ds_fk FOREIGN KEY (ds_id, dase_frozen) REFERENCES data_all(id, frozen) ON UPDATE CASCADE;
ALTER TABLE ONLY data_set_properties
ADD CONSTRAINT dspr_dstpt_fk FOREIGN KEY (dstpt_id) REFERENCES data_set_type_property_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY data_set_properties
ADD CONSTRAINT dspr_mapr_fk FOREIGN KEY (mate_prop_id) REFERENCES materials(id);
ALTER TABLE ONLY data_set_properties
ADD CONSTRAINT dspr_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY data_set_properties_history
ADD CONSTRAINT dsprh_auth_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY data_set_properties_history
ADD CONSTRAINT dsprh_ds_fk FOREIGN KEY (ds_id) REFERENCES data_all(id) ON DELETE CASCADE;
ALTER TABLE ONLY data_set_properties_history
ADD CONSTRAINT dsprh_dstpt_fk FOREIGN KEY (dstpt_id) REFERENCES data_set_type_property_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY data_set_relationships_all
ADD CONSTRAINT dsre_data_fk_child FOREIGN KEY (data_id_child, child_frozen) REFERENCES data_all(id, frozen_for_parents) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE ONLY data_set_relationships_all
ADD CONSTRAINT dsre_data_fk_comp FOREIGN KEY (data_id_child, comp_frozen) REFERENCES data_all(id, frozen_for_conts) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE ONLY data_set_relationships_all
ADD CONSTRAINT dsre_data_fk_cont FOREIGN KEY (data_id_parent, cont_frozen) REFERENCES data_all(id, frozen_for_comps) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE ONLY data_set_relationships_all
ADD CONSTRAINT dsre_data_fk_parent FOREIGN KEY (data_id_parent, parent_frozen) REFERENCES data_all(id, frozen_for_children) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE ONLY data_set_relationships_all
ADD CONSTRAINT dsre_data_fk_relationship FOREIGN KEY (relationship_id) REFERENCES relationship_types(id);
ALTER TABLE ONLY data_set_relationships_all
ADD CONSTRAINT dsre_del_fk FOREIGN KEY (del_id) REFERENCES deletions(id);
ALTER TABLE ONLY data_store_service_data_set_types
ADD CONSTRAINT dssdst_ds_fk FOREIGN KEY (data_store_service_id) REFERENCES data_store_services(id) ON DELETE CASCADE;
ALTER TABLE ONLY data_store_service_data_set_types
ADD CONSTRAINT dssdst_dst_fk FOREIGN KEY (data_set_type_id) REFERENCES data_set_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY data_store_services
ADD CONSTRAINT dsse_ds_fk FOREIGN KEY (data_store_id) REFERENCES data_stores(id) ON DELETE CASCADE;
ALTER TABLE ONLY data_set_type_property_types
ADD CONSTRAINT dstpt_dsty_fk FOREIGN KEY (dsty_id) REFERENCES data_set_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY data_set_type_property_types
ADD CONSTRAINT dstpt_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY data_set_type_property_types
ADD CONSTRAINT dstpt_prty_fk FOREIGN KEY (prty_id) REFERENCES property_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY data_set_type_property_types
ADD CONSTRAINT dstpt_script_fk FOREIGN KEY (script_id) REFERENCES scripts(id);
ALTER TABLE ONLY data_set_types
ADD CONSTRAINT dsty_script_fk FOREIGN KEY (validation_script_id) REFERENCES scripts(id);
ALTER TABLE ONLY experiment_type_property_types
ADD CONSTRAINT etpt_exty_fk FOREIGN KEY (exty_id) REFERENCES experiment_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY experiment_type_property_types
ADD CONSTRAINT etpt_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY experiment_type_property_types
ADD CONSTRAINT etpt_prty_fk FOREIGN KEY (prty_id) REFERENCES property_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY experiment_type_property_types
ADD CONSTRAINT etpt_script_fk FOREIGN KEY (script_id) REFERENCES scripts(id);
ALTER TABLE ONLY events_search
ADD CONSTRAINT events_search_exac_id_fk FOREIGN KEY (exac_id) REFERENCES attachment_contents(id);
ALTER TABLE ONLY events_search
ADD CONSTRAINT events_search_pers_id_registerer_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY events
ADD CONSTRAINT evnt_exac_fk FOREIGN KEY (exac_id) REFERENCES attachment_contents(id);
ALTER TABLE ONLY events
ADD CONSTRAINT evnt_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY external_data
ADD CONSTRAINT exda_cvte_fk FOREIGN KEY (cvte_id_stor_fmt) REFERENCES controlled_vocabulary_terms(id);
ALTER TABLE ONLY external_data
ADD CONSTRAINT exda_cvte_stored_on_fk FOREIGN KEY (cvte_id_store) REFERENCES controlled_vocabulary_terms(id);
ALTER TABLE ONLY external_data
ADD CONSTRAINT exda_data_fk FOREIGN KEY (id) REFERENCES data_all(id);
ALTER TABLE ONLY external_data
ADD CONSTRAINT exda_ffty_fk FOREIGN KEY (ffty_id) REFERENCES file_format_types(id);
ALTER TABLE ONLY external_data
ADD CONSTRAINT exda_loty_fk FOREIGN KEY (loty_id) REFERENCES locator_types(id);
ALTER TABLE ONLY experiments_all
ADD CONSTRAINT expe_del_fk FOREIGN KEY (del_id) REFERENCES deletions(id);
ALTER TABLE ONLY experiments_all
ADD CONSTRAINT expe_exty_fk FOREIGN KEY (exty_id) REFERENCES experiment_types(id);
ALTER TABLE ONLY experiments_all
ADD CONSTRAINT expe_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY experiments_all
ADD CONSTRAINT expe_pers_fk_mod FOREIGN KEY (pers_id_modifier) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY experiments_all
ADD CONSTRAINT expe_proj_fk FOREIGN KEY (proj_id, proj_frozen) REFERENCES projects(id, frozen_for_exp) ON UPDATE CASCADE;
ALTER TABLE ONLY experiment_properties
ADD CONSTRAINT experiment_properties_unique_fk FOREIGN KEY (etpt_id, is_unique) REFERENCES experiment_type_property_types(id, is_unique) ON DELETE CASCADE;
ALTER TABLE ONLY experiment_properties
ADD CONSTRAINT expr_auth_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY experiment_properties
ADD CONSTRAINT expr_cvte_fk FOREIGN KEY (cvte_id) REFERENCES controlled_vocabulary_terms(id);
ALTER TABLE ONLY experiment_properties
ADD CONSTRAINT expr_etpt_fk FOREIGN KEY (etpt_id) REFERENCES experiment_type_property_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY experiment_properties
ADD CONSTRAINT expr_expe_fk FOREIGN KEY (expe_id, expe_frozen) REFERENCES experiments_all(id, frozen) ON UPDATE CASCADE;
ALTER TABLE ONLY experiment_properties
ADD CONSTRAINT expr_mapr_fk FOREIGN KEY (mate_prop_id) REFERENCES materials(id);
ALTER TABLE ONLY experiment_properties
ADD CONSTRAINT expr_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY experiment_properties_history
ADD CONSTRAINT exprh_auth_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY experiment_properties_history
ADD CONSTRAINT exprh_etpt_fk FOREIGN KEY (etpt_id) REFERENCES experiment_type_property_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY experiment_properties_history
ADD CONSTRAINT exprh_expe_fk FOREIGN KEY (expe_id) REFERENCES experiments_all(id) ON DELETE CASCADE;
ALTER TABLE ONLY experiment_relationships_history
ADD CONSTRAINT exrelh_auth_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY experiment_relationships_history
ADD CONSTRAINT exrelh_data_fk FOREIGN KEY (data_id) REFERENCES data_all(id) ON DELETE SET NULL;
ALTER TABLE ONLY experiment_relationships_history
ADD CONSTRAINT exrelh_main_expe_fk FOREIGN KEY (main_expe_id) REFERENCES experiments_all(id) ON DELETE CASCADE;
ALTER TABLE ONLY experiment_relationships_history
ADD CONSTRAINT exrelh_proj_fk FOREIGN KEY (proj_id) REFERENCES projects(id) ON DELETE SET NULL;
ALTER TABLE ONLY experiment_relationships_history
ADD CONSTRAINT exrelh_samp_fk FOREIGN KEY (samp_id) REFERENCES samples_all(id) ON DELETE SET NULL;
ALTER TABLE ONLY experiment_types
ADD CONSTRAINT exty_script_fk FOREIGN KEY (validation_script_id) REFERENCES scripts(id);
ALTER TABLE ONLY filters
ADD CONSTRAINT filt_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY grid_custom_columns
ADD CONSTRAINT grid_custom_columns_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY link_data
ADD CONSTRAINT lnda_data_fk FOREIGN KEY (id, data_frozen) REFERENCES data_all(id, frozen) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE ONLY material_properties
ADD CONSTRAINT mapr_auth_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY material_properties
ADD CONSTRAINT mapr_cvte_fk FOREIGN KEY (cvte_id) REFERENCES controlled_vocabulary_terms(id);
ALTER TABLE ONLY material_properties
ADD CONSTRAINT mapr_mapr_fk FOREIGN KEY (mate_prop_id) REFERENCES materials(id);
ALTER TABLE ONLY material_properties
ADD CONSTRAINT mapr_mate_fk FOREIGN KEY (mate_id) REFERENCES materials(id);
ALTER TABLE ONLY material_properties
ADD CONSTRAINT mapr_mtpt_fk FOREIGN KEY (mtpt_id) REFERENCES material_type_property_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY material_properties
ADD CONSTRAINT mapr_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY material_properties_history
ADD CONSTRAINT maprh_auth_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY material_properties_history
ADD CONSTRAINT maprh_mate_fk FOREIGN KEY (mate_id) REFERENCES materials(id) ON DELETE CASCADE;
ALTER TABLE ONLY material_properties_history
ADD CONSTRAINT maprh_mtpt_fk FOREIGN KEY (mtpt_id) REFERENCES material_type_property_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY materials
ADD CONSTRAINT mate_maty_fk FOREIGN KEY (maty_id) REFERENCES material_types(id);
ALTER TABLE ONLY materials
ADD CONSTRAINT mate_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY material_properties
ADD CONSTRAINT material_properties_unique_fk FOREIGN KEY (mtpt_id, is_unique) REFERENCES material_type_property_types(id, is_unique) ON DELETE CASCADE;
ALTER TABLE ONLY material_types
ADD CONSTRAINT maty_script_fk FOREIGN KEY (validation_script_id) REFERENCES scripts(id);
ALTER TABLE ONLY metaproject_assignments_all
ADD CONSTRAINT metaproject_assignments_all_data_id_fk FOREIGN KEY (data_id) REFERENCES data_all(id) ON DELETE CASCADE;
ALTER TABLE ONLY metaproject_assignments_all
ADD CONSTRAINT metaproject_assignments_all_del_id_fk FOREIGN KEY (del_id) REFERENCES deletions(id);
ALTER TABLE ONLY metaproject_assignments_all
ADD CONSTRAINT metaproject_assignments_all_expe_id_fk FOREIGN KEY (expe_id) REFERENCES experiments_all(id) ON DELETE CASCADE;
ALTER TABLE ONLY metaproject_assignments_all
ADD CONSTRAINT metaproject_assignments_all_mate_id_fk FOREIGN KEY (mate_id) REFERENCES materials(id) ON DELETE CASCADE;
ALTER TABLE ONLY metaproject_assignments_all
ADD CONSTRAINT metaproject_assignments_all_mepr_id_fk FOREIGN KEY (mepr_id) REFERENCES metaprojects(id) ON DELETE CASCADE;
ALTER TABLE ONLY metaproject_assignments_all
ADD CONSTRAINT metaproject_assignments_all_samp_id_fk FOREIGN KEY (samp_id) REFERENCES samples_all(id) ON DELETE CASCADE;
ALTER TABLE ONLY metaprojects
ADD CONSTRAINT metaprojects_owner_fk FOREIGN KEY (owner) REFERENCES persons(id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY material_type_property_types
ADD CONSTRAINT mtpt_maty_fk FOREIGN KEY (maty_id) REFERENCES material_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY material_type_property_types
ADD CONSTRAINT mtpt_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY material_type_property_types
ADD CONSTRAINT mtpt_prty_fk FOREIGN KEY (prty_id) REFERENCES property_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY material_type_property_types
ADD CONSTRAINT mtpt_script_fk FOREIGN KEY (script_id) REFERENCES scripts(id);
ALTER TABLE ONLY operation_executions
ADD CONSTRAINT operation_executions_owner_fk FOREIGN KEY (owner) REFERENCES persons(id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY persons
ADD CONSTRAINT pers_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY persons
ADD CONSTRAINT pers_space_fk FOREIGN KEY (space_id) REFERENCES spaces(id) ON DELETE SET NULL;
ALTER TABLE ONLY post_registration_dataset_queue
ADD CONSTRAINT prdq_ds_fk FOREIGN KEY (ds_id) REFERENCES data_all(id) ON DELETE CASCADE;
ALTER TABLE ONLY projects
ADD CONSTRAINT proj_pers_fk_leader FOREIGN KEY (pers_id_leader) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY projects
ADD CONSTRAINT proj_pers_fk_mod FOREIGN KEY (pers_id_modifier) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY projects
ADD CONSTRAINT proj_pers_fk_registerer FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY projects
ADD CONSTRAINT proj_space_fk FOREIGN KEY (space_id, space_frozen) REFERENCES spaces(id, frozen_for_proj) ON UPDATE CASCADE;
ALTER TABLE ONLY project_relationships_history
ADD CONSTRAINT prrelh_auth_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY project_relationships_history
ADD CONSTRAINT prrelh_expe_fk FOREIGN KEY (expe_id) REFERENCES experiments_all(id) ON DELETE SET NULL;
ALTER TABLE ONLY project_relationships_history
ADD CONSTRAINT prrelh_main_proj_fk FOREIGN KEY (main_proj_id) REFERENCES projects(id) ON DELETE CASCADE;
ALTER TABLE ONLY project_relationships_history
ADD CONSTRAINT prrelh_samp_fk FOREIGN KEY (samp_id) REFERENCES samples_all(id) ON DELETE SET NULL;
ALTER TABLE ONLY project_relationships_history
ADD CONSTRAINT prrelh_space_fk FOREIGN KEY (space_id) REFERENCES spaces(id) ON DELETE SET NULL;
ALTER TABLE ONLY property_types
ADD CONSTRAINT prty_covo_fk FOREIGN KEY (covo_id) REFERENCES controlled_vocabularies(id);
ALTER TABLE ONLY property_types
ADD CONSTRAINT prty_daty_fk FOREIGN KEY (daty_id) REFERENCES data_types(id);
ALTER TABLE ONLY property_types
ADD CONSTRAINT prty_maty_fk FOREIGN KEY (maty_prop_id) REFERENCES material_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY property_types
ADD CONSTRAINT prty_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY property_types
ADD CONSTRAINT prty_saty_fk FOREIGN KEY (saty_prop_id) REFERENCES sample_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY queries
ADD CONSTRAINT quer_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY role_assignments
ADD CONSTRAINT roas_ag_fk_grantee FOREIGN KEY (ag_id_grantee) REFERENCES authorization_groups(id) ON DELETE CASCADE;
ALTER TABLE ONLY role_assignments
ADD CONSTRAINT roas_pers_fk_grantee FOREIGN KEY (pers_id_grantee) REFERENCES persons(id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY role_assignments
ADD CONSTRAINT roas_pers_fk_registerer FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY role_assignments
ADD CONSTRAINT roas_project_fk FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE;
ALTER TABLE ONLY role_assignments
ADD CONSTRAINT roas_space_fk FOREIGN KEY (space_id) REFERENCES spaces(id) ON DELETE CASCADE;
ALTER TABLE ONLY samples_all
ADD CONSTRAINT samp_del_fk FOREIGN KEY (del_id) REFERENCES deletions(id);
ALTER TABLE ONLY samples_all
ADD CONSTRAINT samp_expe_fk FOREIGN KEY (expe_id, expe_frozen) REFERENCES experiments_all(id, frozen_for_samp) ON UPDATE CASCADE;
ALTER TABLE ONLY samples_all
ADD CONSTRAINT samp_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY samples_all
ADD CONSTRAINT samp_pers_fk_mod FOREIGN KEY (pers_id_modifier) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY samples_all
ADD CONSTRAINT samp_proj_fk FOREIGN KEY (proj_id, proj_frozen) REFERENCES projects(id, frozen_for_samp) ON UPDATE CASCADE;
ALTER TABLE ONLY samples_all
ADD CONSTRAINT samp_samp_fk_part_of FOREIGN KEY (samp_id_part_of, cont_frozen) REFERENCES samples_all(id, frozen_for_comp) ON UPDATE CASCADE;
ALTER TABLE ONLY samples_all
ADD CONSTRAINT samp_saty_fk FOREIGN KEY (saty_id) REFERENCES sample_types(id);
ALTER TABLE ONLY samples_all
ADD CONSTRAINT samp_space_fk FOREIGN KEY (space_id, space_frozen) REFERENCES spaces(id, frozen_for_samp) ON UPDATE CASCADE;
ALTER TABLE ONLY sample_properties
ADD CONSTRAINT sample_properties_unique_fk FOREIGN KEY (stpt_id, is_unique) REFERENCES sample_type_property_types(id, is_unique) ON DELETE CASCADE;
ALTER TABLE ONLY sample_relationships_all
ADD CONSTRAINT sample_relationships_pers_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY sample_relationships_history
ADD CONSTRAINT samprelh_auth_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY sample_relationships_history
ADD CONSTRAINT samprelh_data_fk FOREIGN KEY (data_id) REFERENCES data_all(id) ON DELETE SET NULL;
ALTER TABLE ONLY sample_relationships_history
ADD CONSTRAINT samprelh_expe_fk FOREIGN KEY (expe_id) REFERENCES experiments_all(id) ON DELETE SET NULL;
ALTER TABLE ONLY sample_relationships_history
ADD CONSTRAINT samprelh_main_samp_fk FOREIGN KEY (main_samp_id) REFERENCES samples_all(id) ON DELETE CASCADE;
ALTER TABLE ONLY sample_relationships_history
ADD CONSTRAINT samprelh_project_fk FOREIGN KEY (proj_id) REFERENCES projects(id) ON DELETE SET NULL;
ALTER TABLE ONLY sample_relationships_history
ADD CONSTRAINT samprelh_samp_fk FOREIGN KEY (samp_id) REFERENCES samples_all(id) ON DELETE SET NULL;
ALTER TABLE ONLY sample_relationships_history
ADD CONSTRAINT samprelh_space_fk FOREIGN KEY (space_id) REFERENCES spaces(id) ON DELETE SET NULL;
ALTER TABLE ONLY sample_properties
ADD CONSTRAINT sapr_auth_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY sample_properties
ADD CONSTRAINT sapr_cvte_fk FOREIGN KEY (cvte_id) REFERENCES controlled_vocabulary_terms(id);
ALTER TABLE ONLY sample_properties
ADD CONSTRAINT sapr_mapr_fk FOREIGN KEY (mate_prop_id) REFERENCES materials(id);
ALTER TABLE ONLY sample_properties
ADD CONSTRAINT sapr_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY sample_properties
ADD CONSTRAINT sapr_samp_fk FOREIGN KEY (samp_id, samp_frozen) REFERENCES samples_all(id, frozen) ON UPDATE CASCADE;
ALTER TABLE ONLY sample_properties
ADD CONSTRAINT sapr_stpt_fk FOREIGN KEY (stpt_id) REFERENCES sample_type_property_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY sample_properties_history
ADD CONSTRAINT saprh_auth_fk FOREIGN KEY (pers_id_author) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY sample_properties_history
ADD CONSTRAINT saprh_samp_fk FOREIGN KEY (samp_id) REFERENCES samples_all(id) ON DELETE CASCADE;
ALTER TABLE ONLY sample_properties_history
ADD CONSTRAINT saprh_stpt_fk FOREIGN KEY (stpt_id) REFERENCES sample_type_property_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY sample_relationships_all
ADD CONSTRAINT sare_data_fk_child FOREIGN KEY (sample_id_child, child_frozen) REFERENCES samples_all(id, frozen_for_parents) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE ONLY sample_relationships_all
ADD CONSTRAINT sare_data_fk_parent FOREIGN KEY (sample_id_parent, parent_frozen) REFERENCES samples_all(id, frozen_for_children) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE ONLY sample_relationships_all
ADD CONSTRAINT sare_data_fk_relationship FOREIGN KEY (relationship_id) REFERENCES relationship_types(id);
ALTER TABLE ONLY sample_relationships_all
ADD CONSTRAINT sare_del_fk FOREIGN KEY (del_id) REFERENCES deletions(id);
ALTER TABLE ONLY sample_types
ADD CONSTRAINT saty_script_fk FOREIGN KEY (validation_script_id) REFERENCES scripts(id);
ALTER TABLE ONLY scripts
ADD CONSTRAINT scri_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY semantic_annotations
ADD CONSTRAINT semantic_annotations_prty_id_fk FOREIGN KEY (prty_id) REFERENCES property_types(id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY semantic_annotations
ADD CONSTRAINT semantic_annotations_saty_id_fk FOREIGN KEY (saty_id) REFERENCES sample_types(id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY semantic_annotations
ADD CONSTRAINT semantic_annotations_stpt_id_fk FOREIGN KEY (stpt_id) REFERENCES sample_type_property_types(id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY spaces
ADD CONSTRAINT space_pers_fk_registerer FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY sample_type_property_types
ADD CONSTRAINT stpt_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE ONLY sample_type_property_types
ADD CONSTRAINT stpt_prty_fk FOREIGN KEY (prty_id) REFERENCES property_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY sample_type_property_types
ADD CONSTRAINT stpt_saty_fk FOREIGN KEY (saty_id) REFERENCES sample_types(id) ON DELETE CASCADE;
ALTER TABLE ONLY sample_type_property_types
ADD CONSTRAINT stpt_script_fk FOREIGN KEY (script_id) REFERENCES scripts(id);
GRANT SELECT ON TABLE operation_executions TO openbis_readonly;
REVOKE ALL ON SCHEMA public FROM postgres;
GRANT ALL ON SCHEMA public TO postgres;