"Saya yakin ini tidak mungkin. Anda tidak dapat membuat Catatan Alamat sampai Anda mengetahui ID orang tersebut dan Anda tidak dapat memasukkan catatan orang tersebut sampai Anda mengetahui AddressId untuk bidang PrimaryAddressId."
Sepintas, klaim itu tampak SANGAT menarik. Namun, itu cukup menguntungkan.
Ini adalah jenis masalah yang sangat umum yang coba diserang oleh vendor SQL DBMS selama beberapa dekade.
Kuncinya adalah bahwa semua pemeriksaan kendala harus "ditangguhkan" sampai kedua sisipan selesai. Itu dapat dicapai dalam berbagai bentuk. Transaksi basis data mungkin menawarkan kemungkinan untuk melakukan sesuatu seperti "ATUR pemeriksaan kendala yang ditangguhkan AKTIF", dan Anda sudah selesai (jika bukan karena fakta bahwa dalam contoh khusus ini, Anda mungkin harus mengacaukan desain Anda agar hanya dapat MENDEFINISIKAN dua batasan FK, karena salah satunya BUKAN FK 'sejati' dalam pengertian SQL !).
Solusi berbasis pemicu seperti yang dijelaskan di sini pada dasarnya mencapai efek yang sama, tetapi solusi tersebut terkena semua masalah pemeliharaan yang ada dengan integritas yang diterapkan aplikasi.
Dalam karya mereka, Chris Date &Hugh Darwen menjelaskan apa yang menjadi solusi sebenarnya untuk masalah tersebut:penugasan ganda. Artinya, pada dasarnya, kemungkinan untuk menyusun beberapa pernyataan pembaruan yang berbeda dan membuat DBMS bertindak seolah-olah itu adalah satu pernyataan tunggal. Implementasi konsep itu memang ada, tetapi Anda tidak akan menemukan yang berbicara SQL.