2009-11-14 12 views
5

मैं डेटा स्टोर करने के लिए एसक्लाइट डेटाबेस का उपयोग कर रहा हूं। मेरे पास तीन टेबल हैं: चालान, InvRow, Invdetails।एसक्लाइट में एकाधिक तालिकाओं से डेटा कैसे हटाएं?

तालिकाओं के बीच

relationsip हैं:

Invoice.Id = InvRow.InvId 
InvRow.Id = Invdetails.RowId 

मैं एक ही क्वेरी का उपयोग कर तीन टेबल से संबंधित प्रविष्टियों को हटाने के लिए की जरूरत है। मैं उसे कैसे कर सकता हूँ? कोई मदद?

उत्तर

8

संस्करण 3.6.1 9 (200 9 अक्टूबर 14) से पहले SQLite विदेशी कुंजी बाधाओं का समर्थन नहीं करता है, लेकिन आप use triggers to maintain relational integrity कर सकते हैं।

Starting with 3.6.19, हालांकि, SQLite उचित foreign key constraintsON [UPDATE|DELETE] CASCADE क्लॉज के साथ उचित समर्थन करता है, जो आप चाहते हैं वह करेगा।

+0

हाय चेकर्स, मैन्युअल हटाने के साथ हटाए गए प्रदर्शन का प्रदर्शन कैसा है? धन्यवाद। – pierrotlefou

4

एलेक्स बी एक अच्छा जवाब प्रदान करता है लेकिन यह मेरे लिए काम नहीं करता है। अभी बहुत अधिक काम है।

दुर्भाग्यवश मुझे दो बयानों में हटा देना पड़ा, लेकिन यह ठीक काम करता था। मेरे पास दो टेबल, फिल्में और मूवी_प्रोवाइडर हैं, movie_providers एक जॉइन टेबल है जो बताती है कि कौन सा प्रदाता मेरी फिल्म दिखा रहा है।

मैं चाहता था: DELETE FROM movies, movie_pproviders WHERE movie.id = movie_providers.movie_id AND [my constraint]

लेकिन 2 करना पड़ा कदम

DELETE FROM movies WHERE [my constraint] 
DELETE FROM movie_providers where movie_id NOT IN (SELECT DISTINCT id FROM movies) 

इसका मतलब यह है कि मैंने पहले फिल्मों और movie_providers के बीच सामंजस्य था। यदि नहीं, तो मैंने अभी स्थिरता बनाई है।

+0

यह एक बहुत अच्छा समाधान है – Indio

संबंधित मुद्दे