Saya mempunyai jadual yang dipanggil BFF yang menyimpan ID pengguna dan ID pengguna kawan baik, dan saya mahu mengehadkan jadual kepada 3 kawan baik untuk setiap pengguna yang berbeza.
Maksud saya jika struktur jadual ialah:
BFFs(userID, userID)
Rekodnya ialah:
(3286, 1212) (3286, 4545) (3286, 7878)
Dalam kes ini, pengguna dengan ID 3286 tidak sepatutnya dibenarkan mempunyai rekod baharu, contohnya (3286, xyzt).
Saya menulis pencetus ini tetapi saya tidak pasti:
CREATE TRIGGER BFFControl BEFORE INSERT ON BFFs FOR EACH ROW DECLARE numberOfBFFs INTEGER; max_BFFs INTEGER := 3; BEGIN SELECT COUNT(*) INTO numberOfBFFs FROM BFFs WHERE sender =: NEW.sender IF :OLD.sender =: NEW.sender THEN RETURN; ELSE IF numberOfBFFs >= max_BFFs THEN RAISE_APPLICATION_ERROR(-20000, 'Users are allowed to have at most thre friends.'); END IF; END IF; END; /
Bagaimanakah saya harus memperkayakannya semula pada jadual hubungan melalui penegasan atau pencetus?
Terima kasih
Sebagai tambahan kepada jawapan ypercubes (yang memanfaatkan DRI untuk menguatkuasakan peraturan anda), anda juga boleh melakukan LEFT JOIN menggunakan MIN untuk mendapatkan 1, 2 atau 3 seterusnya daripada tiga jadual setiap ID pengguna
Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa
Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa Sofa
Tambah satu lagi lajur,
FriendNumber
dan kekangan kunci asing pada jadual rujukan yang mengandungi tepat 3 baris:Kemudian anda boleh menambah:
Atau seperti yang dicadangkan @gbn, seperti ini (jadi lajur diisi secara automatik):
Asafa mematuhi undang-undang dan menghantar mesej Asafa mematuhi undang-undang dan menghantar mesej Asafa mematuhi undang-undang dan menghantar mesej Asafa mematuhi undang-undang dan menghantar mesej