Apa yang Anda miliki di sini adalah batasan tabel lintas baris - yaitu Anda tidak bisa hanya meletakkan satu CONSTRAINT
Oracle pada kolom, karena ini hanya dapat melihat data dalam satu baris dalam satu waktu.
Oracle hanya mendukung dua jenis batasan lintas baris - keunikan (misalnya kunci utama dan batasan unik) dan integritas referensial (kunci asing).
Dalam kasus Anda, Anda harus membuat kode sendiri kendala - dan dengan itu muncul tanggung jawab untuk memastikan bahwa kendala tidak dilanggar dengan adanya beberapa sesi, yang masing-masing tidak dapat melihat data yang dimasukkan/diperbarui oleh sesi bersamaan lainnya (setidaknya, sampai mereka berkomitmen).
Pendekatan sederhana adalah menambahkan pemicu yang mengeluarkan kueri untuk menghitung berapa banyak catatan yang bertentangan dengan catatan baru; tetapi ini tidak akan berfungsi karena pemicu tidak dapat melihat baris yang telah disisipkan/diperbarui oleh sesi lain tetapi belum dilakukan; jadi pemicu terkadang mengizinkan anggota untuk menyewa 6 video, selama (misalnya) mereka mendapatkan dua kasir untuk memasukkan data di terminal terpisah.
Satu arah untuk mengatasi masalah ini adalah dengan memasukkan beberapa elemen serialisasi - mis. pemicu pertama-tama akan meminta kunci pada catatan anggota (misalnya dengan SELECT FOR UPDATE) sebelum diizinkan untuk memeriksa persewaan; dengan begitu, jika sesi ke-2 mencoba menyisipkan rental, sesi tersebut akan menunggu hingga sesi pertama melakukan commit atau rollback.
Cara lain mengatasi masalah ini adalah dengan menggunakan Tampilan Terwujud agregasi, yang akan didasarkan pada kueri yang dirancang untuk menemukan baris apa pun yang gagal dalam pengujian; harapannya adalah bahwa MV akan kosong, dan Anda menempatkan batasan tabel pada MV sedemikian rupa sehingga jika suatu baris muncul di MV, batasan tersebut akan dilanggar. Efeknya adalah setiap pernyataan yang mencoba menyisipkan baris yang melanggar batasan akan menyebabkan pelanggaran batasan saat MV di-refresh.
Menulis kueri untuk ini berdasarkan desain Anda diserahkan sebagai latihan untuk pembaca :)