Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सिंगल टेबल इनहेरिटेंस पर संदर्भात्मक अखंडता कैसे लागू करें?

आप अपने Users . पर ट्रिगर्स लागू कर सकते हैं और Team तालिकाएँ जो तब निष्पादित होती हैं जब भी पंक्तियाँ इनमें से किसी से भी हटाई जाती हैं:

उपयोगकर्ता तालिका:

DELIMITER $$
CREATE TRIGGER user_playlist_delete 
BEFORE DELETE ON User FOR EACH ROW
BEGIN
    DELETE a FROM Playlist a
    INNER JOIN UserPlaylist b ON a.id = b.id AND b.userId = OLD.id;
END$$
DELIMITER ;

टीम तालिका:

DELIMITER $$
CREATE TRIGGER team_playlist_delete 
BEFORE DELETE ON Team FOR EACH ROW
BEGIN
    DELETE a FROM Playlist a
    INNER JOIN TeamPlaylist b ON a.id = b.id AND b.teamId = OLD.id;
END$$
DELIMITER ;

ये ट्रिगर क्या करेंगे, हर बार इन तालिकाओं में से किसी एक से एक रिकॉर्ड हटा दिया जाता है, एक DELETE ऑपरेशन स्वचालित रूप से Playlists पर निष्पादित होगा id . का उपयोग कर तालिका जिसे हटाया जा रहा है (एक आंतरिक जुड़ाव के माध्यम से)।

मैंने इसका परीक्षण किया है और यह बहुत अच्छा काम करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल में एकाधिक डीबी कनेक्शन

  2. LAST_DAY () उदाहरण – MySQL

  3. PDO, $_GET, और MySQL डेटाबेस से चयन

  4. mysql में नहीं चुनें () - सेट को अलग करें?

  5. क्या MySQL उपयोगकर्ता परिभाषित डेटा प्रकारों का समर्थन करता है