Αντικρουόμενες CASCADE και να περιορίσει την ξένη βασικές απαιτήσεις;




Δουλεύω σε μια βάση δεδομένων που παρακολουθεί τα αρχεία και τις εξαρτήσεις σε έργα. Εν συντομία, έχω δύο κύριους πίνακες? οι λίστες ΕΡΓΑ πίνακα του έργου ονόματα και άλλες ιδιότητες, ο πίνακας ΑΡΧΕΙΑ απαριθμεί τα αρχεία. Κάθε σημεία εισόδου αρχείων σε ένα έργο σαν ένα ξένο κλειδί που να CASCADE, οπότε αν μπορώ να διαγράψω ένα αρχείο έργου από τη βάση δεδομένων, όλα τα στοιχεία του αρχείου εξαφανίζονται επίσης. Μέχρι εδώ καλά.


Τώρα έχω ένα επιπλέον τραπέζι εξαρτήσεις. Κάθε εγγραφή στον πίνακα εξάρτησης είναι δύο αρχεία, διευκρινίζοντας ότι το πρώτο αρχείο εξαρτάται από την δεύτερη. Και πάλι αυτά είναι ξένα κλειδιά, η πρώτη έχει οριστεί σε CASCADE (οπότε αν μπορώ να διαγράψω μια καταχώρηση αρχείου, το αρχείο αυτό διαγράφεται), αλλά η δεύτερη έχει οριστεί για τον περιορισμό (γι 'αυτό δεν μου επιτρέπεται να διαγράψετε μια καταχώρηση αρχείου αν υπάρχουν άλλα αρχεία εξαρτώνται σε αυτό). Και πάλι, όλα φαίνονται καλά.


Δυστυχώς, φαίνεται ότι δεν μπορώ πια να διαγράψετε ένα έργο με ένα μόνο SQL διαγραφή δήλωση! Οι διαγραφής προσπαθεί να καταρράκτης-διαγράψετε τα αρχεία, αλλά αν κάποια από αυτές εμφανίζονται στον πίνακα εξαρτήσεις, το περιορίζει ξένο κλειδί δεν επιτρέπει τη διαγραφή (έστω και αν η εγγραφή στον πίνακα εξαρτήσεων θα πρέπει να αφαιρεθεί, διότι η άλλη στήλη είναι CASCADE). Η μόνη λύση που έχω είναι να υπολογίσει με ακρίβεια για να διαγράψετε τα αρχεία, ώστε κανένας από τους περιορισμούς ρεκόρ της εξάρτησης παραβιάζονται, και αφαιρέστε τις εγγραφές του αρχείου, ένα κάθε φορά, πριν επιχειρήσετε να αφαιρέσετε το έργο.


Υπάρχει κάποιος τρόπος για να δημιουργήσει σχήμα βάσης δεδομένων μου, έτσι μια ενιαία SQL διαγράψει από τον πίνακα έργων θα καταρράκτη σωστά τις άλλες διαγραφές εκεί; Είμαι χρησιμοποιώντας Firebird 2.1, αλλά δεν ξέρω αν αυτό κάνει καμία διαφορά - φαίνεται ότι θα έπρεπε να υπάρχει ένας τρόπος για να γίνει αυτό το έργο;
Δεν μπορείτε να ελέγξετε τη σειρά της διαγραφής μέσω υπερχείλιση ξένο κλειδί, αλλά ίσως να είναι σε θέση να σχεδιάσει ένα έναυσμα για `PROJECTS`να διαγράψετε γραμμές σε `FILES`ότι ανήκουν σε αυτό το πρόγραμμα και παρατίθενται επίσης στο `DEPENDENCIES`ως εξαρτάται από άλλους `FILES`. Το κάνετε μια `BEFORE DELETE`σκανδάλη, γι 'αυτό θα πρέπει να εκτελέσει πριν από τις πολλαπλές επιπτώσεις.


Κάτι σαν αυτό:



```
CREATE TRIGGER Del_Child_Files FOR PROJECTS
BEFORE INSERT IGNORE 
AS BEGIN
  FOR SELECT F.FILE_ID FROM FILES F JOIN DEPENDENCIES D 
      ON F.FILE_ID = D.CHILD_ID
    WHERE F.PROJECT_ID = OLD.PROJECT_ID
    INTO :file_id
  DO
    DELETE FROM FILES WHERE FILE_ID = :file_id;
  DONE
END

```

Έτσι, όταν διαγράφετε ένα έργο, αυτό διαγράφει όλα τα «παιδί» των αρχείων ενός έργου που εξαρτώνται από άλλα αρχεία, και αυτό καταρράκτες να διαγράψετε γραμμές στο `DEPENDENCIES`έτσι όλα τα υπόλοιπα αρχεία είναι χωρίς εξαρτήσεις. Διαγραφή σας του έργου μπορεί τώρα καταρράκτη να διαγράψετε αυτά τα αρχεία.


Δεν το έχω δοκιμάσει αυτό και Firebird σύνταξη μου μπορεί να είναι σκουριασμένα, αλλά ίσως αυτό θα σας πάρει ξεκίνησε.


Προφανώς, παρακαλούμε να ελέγξετε σε ένα αντίγραφο των δεδομένων σας, όχι τα ζωντανά στοιχεία!
μπορείς να σβήσεις αυτά τα αρχεία. στην συνέχει μπες στο σύστημα και εγκατέστησε το πακέτο logrotate και δεν θα ξανασυμβεί. κανονικά θε έπρεπε να ήταν εγκατεστημένο.

για περισσότερα

[εικόνα]

[log files: καταγραφές, ρουφιάνοι και ανακύκλωση](https://cerebrux.net/2018/08/09/log-files-%ce%ba%ce%b1%cf%84%ce%b1%ce%b3%cf%81%ce%b1%cf%86%ce%ad%cf%82-%cf%81%ce%bf%cf%85%cf%86%ce%b9%ce%ac%ce%bd%ce%bf%ce%b9-%ce%ba%ce%b1%ce%b9-%ce%b1%ce%bd%ce%b1%ce%ba%cf%8d%ce%ba%ce%bb%cf%89/)

μας παρακολουθούν… όχι εκεί έξω… αλλά ο ίδιος σου… Συχνά αυτό επιτυγχάνεται με τη χρήση [«Driven δεδομένων Συνδρομές»](https://msdn.microsoft.com/en-us/library/ms169673.aspx) , αλλά αυτή η λειτουργία είναι διαθέσιμη μόνο σε ορισμένες εκδόσεις του SQL: Enterprise και Business Intelligence, αλλά όχι στο πρότυπο.


Έτσι, υπάρχει μια σειρά από δημιουργικές λύσεις. Αλλά δεν μου αρέσει κάποια από αυτές, και απαιτούν ένα δίκαιο κομμάτι της εργασίας έξω από SSRS.


Οι λύσεις που έχω δει περιλαμβάνουν: Δημιουργία της εγγραφής και στη συνέχεια απενεργοποίηση ή επιτρέπουν την εργασία SQL που στέλνει τη συνδρομή (που προσδιορίζονται από GUID.)


Δημιουργήστε ένα .exe .NET περιτύλιγμα για να χειριστεί την αποστολή του email. Μπορεί να εκτελέσετε το ερώτημα πρώτα να δούμε πόσα επέστρεψε σειρές, και στη συνέχεια, αν χρειαστεί, να δημιουργήσει την έκθεση και να συμπεριληφθεί σε ένα email. προτεινω να δοκιμασεις πρωτα με τους ανοιχτους οδηγους να δεις πως θα σε παει και αν συνεχισεις να εχεις προβλημα εγκατεστησε <https://snapcraft.io/install/fwts/manjaro>

που θα μας δωσει αναλυτικες πληροφοριες καλό είναι να ξέρουμε και λιγάκι τι κάνουμε. το αρχείο /var/lib/pacman/db.lck υπάρχει ακριβώς για να κλειδώνει την βάση να μην γίνει γίνουν αλλαγές από δυο μεριές ταυτόχρονα. υπάρχει δηλαδή για ασφάλεια όταν ενημερώνουμε το σύστημα. μπορεί κάτι να στραβώσει και να ξεμείνει εκεί οπότε η λύση είναι πρ… δες ένα απόσπασμα με την εντολή της αποσύνδεσης για να καταλάβεις:

listdelegate {

id: leavebutton

text: i18n("log out")

highlight: delegatehighlight

icon: "system-log-out"

onclicked: {

ex… Αυτή είναι η γνώμη μου, αλλά? όπως ακριβώς και οι τάξεις περίπτωση δεν, θα ήθελα να εφαρμόσουν μια `copy`μέθοδο του είδους στην τάξη για να καταστεί δυνατή η τροποποίηση, διατηρώντας παράλληλα το αμετάβλητο, αλλά υπάρχει ορισμένες περιπτώσεις που δεν μπορώ να βοηθήσω να το μεταβλητό? Για παράδειγμα, όταν κάτι αναμένεται να γίνει η λειτουργία αντιγραφής είναι πολύ μεγάλη και αργή για την κατηγορία? όπως όταν η τάξη έχει τόσα πολλά συχνά τροποποιημένο μέλη. Και μην ανησυχείτε για χιλιάδες περιπτώσεις που επιπλέουν γύρω στη μνήμη, επειδή είναι αυτόματα GC'ed, οπότε το πιο πραγματικό πρόβλημα είναι ο χρόνος κόστος της αντιγραφής περιπτώσεις της κλάσης. Παρακαλώ πείτε μου εάν η γνώμη μου είναι κάπως λάθος :) Το πρόβλημα προκλήθηκε λόγω των ειδικών χαρακτήρων. Δεν είχα φανταστεί ότι «$» θα ήταν μια τέτοια μεγάλη υπόθεση σε κωδικούς πρόσβασης. Τέλος πάντων μπορείτε να βρείτε μια λύση για αυτό [εδώ](https://nadvi.blogspot.com/2011/02/oracle-password-with-or-special.html) . ένα αρχείο tar.xz πρόκειται στην ουσία για ένα συμπιεσμένο αρχείο, αφού το κατεβάσεις προχωράς στην αποσυμπίεση με την εντολή :

tar -xvf filename.tar.xzοι διακόπττες :

-x : extract

-v : verbose (σου δείχνει κατά την εξαγωγή στο τερματικό τα αρχεία που περιλαμβάνει)

-f : filename (δηλώνεις ότι αυ… παίζει να έχεις κανένα firewall rule που να σε κόβει; <p>δεν περιγράφετε κλίμακα για να ταιριάζει. περιγράφεις την εμφάνιση. (έχω επεξεργαστεί την ερώτησή σας σε αυτό το θέμα.) η υποβολή γίνεται όσο το δυνατόν μεγαλύτερη, διατηρώντας παράλληλα την αναλογία της και προσαρμόζοντας εξ ολοκλήρου μέσα στον γονέα της.</p><p>τέλος πάντων, μπορείτε να το κάνετε αυτό με αυτόματη διάταξη. μπορείτε να το κάνετε εξ ολοκλήρου στο ib από xcode 5.1. ας ξεκινήσουμε με μερικές προβολές:</p><p><img src="https://i.stack.imgur.com/hhdxr.png" alt="some views"></p><p>η ανοιχτή πράσινη όψη έχει αναλογία διαστάσεων 4: 1. η σκούρα πράσινη προβολή έχει αναλογία διαστάσεων 1: 4. πρόκειται να δημιουργήσω περιορισμούς έτσι ώστε η μπλε όψη να γεμίζει το πάνω μισό της οθόνης, η ροζ όψη να γεμίζει το κάτω μισό της οθόνης και κάθε πράσινη προβολή να επεκτείνεται όσο το δυνατόν περισσότερο, διατηρώντας παράλληλα τον λόγο διαστάσεων και προσαρμόζοντας την δοχείο.</p><p>κατ 'αρχάς, θα δημιουργήσω περιορισμούς και στις τέσσερις πλευρές της μπλε όψης. θα το περάσω στον κοντινότερο γείτονα σε κάθε άκρη, με απόσταση 0. φροντίζω να απενεργοποιήσω τα περιθώρια:</p><p><img src="https://i.stack.imgur.com/yo2jf.gif" alt="blue constraints"></p><p>σημειώστε ότι το i <strong> δεν ενημερώνει </strong> το πλαίσιο ακόμα. θεωρώ ότι είναι ευκολότερο να αφήνετε χώρο μεταξύ των απόψεων κατά τη δημιουργία περιορισμών και απλά να ορίσετε τις σταθερές στο 0 (ή οτιδήποτε άλλο) με το χέρι.</p><p>στη συνέχεια, κλίνω το αριστερό, το κάτω και το δεξί άκρο της ροζ εικόνας στον πλησιέστερο γείτονά της. δεν χρειάζεται να ρυθμίσω έναν ανώτατο περιορισμό edge επειδή η άνω άκρη του είναι ήδη περιορισμένη στο κάτω άκρο της μπλε όψης.</p><p><img src="https://i.stack.imgur.com/spins.gif" alt="pink constraints"></p><p>χρειάζομαι επίσης έναν περιορισμό ισοδύναμων μεταξύ των ροζ και μπλε απόψεων. αυτό θα τους κάνει να γεμίσουν το ήμισυ της οθόνης:</p><p><img src="https://i.stack.imgur.com/oelrv.gif" alt="enter image description here"></p><p>αν λέω στο xcode να ενημερώσει όλα τα πλαίσια τώρα, έχω αυτό:</p><p><img src="https://i.stack.imgur.com/9fbwl.png" alt="containers laid out"></p><p>έτσι, οι περιορισμοί που έχω δημιουργήσει μέχρι τώρα είναι σωστοί. ανεξάρτητα από αυτό και να αρχίσετε να εργάζεστε με την ανοιχτό πράσινη όψη.</p><p>η τοποθέτηση σε πτυχές της ανοιχτής πράσινης προβολής απαιτεί πέντε περιορισμούς:</p><ul> <li>απαιτούμενος λόγος αναλογίας διαστάσεων προτεραιότητας στην ανοιχτό πράσινη όψη. μπορείτε να δημιουργήσετε αυτόν τον περιορισμό σε xib ή storyboard με xcode 5.1 ή νεότερη έκδοση.</li> <li>ο περιορισμός της απαιτούμενης προτεραιότητας που περιορίζει το πλάτος της ανοιχτό πράσινης όψης να είναι μικρότερο ή ίσο με το πλάτος του δοχείου.</li> <li>ένας περιορισμός υψηλής προτεραιότητας που καθορίζει το πλάτος της ανοιχτής πράσινης όψης να είναι ίσο με το πλάτος του δοχείου.</li> <li>ο περιορισμός της απαιτούμενης προτεραιότητας που περιορίζει το ύψος της ανοιχτής πράσινης όψης να είναι μικρότερο ή ίσο με το ύψος του δοχείου.</li> <li>ένας περιορισμός υψηλής προτεραιότητας που θέτει το ύψος της ανοιχτής πράσινης όψης να είναι ίσο με το ύψος του δοχείου.</li> </ul><p>ας εξετάσουμε τους δύο περιορισμούς πλάτους. ο περιορισμός που δεν είναι ο ίδιος, είναι επαρκής για να καθορίσει το πλάτος της ανοιχτής πράσινης όψης. πολλά πλάτη θα ταιριάζουν με τον περιορισμό. δεδομένου ότι υπάρχει ασάφεια, το autolayout θα προσπαθήσει να επιλέξει μια λύση που ελαχιστοποιεί το σφάλμα στον άλλο περιορισμό (υψηλής προτεραιότητας αλλά όχι υποχρεωτικό). η ελαχιστοποίηση του σφάλματος σημαίνει ότι το πλάτος είναι όσο το δυνατόν πλησιέστερο στο πλάτος του κιβωτίου, ενώ δεν παραβιάζεται ο απαιτούμενος περιορισμός που δεν είναι μικρός ή ίσος.</p><p>το ίδιο συμβαίνει και με τον περιορισμό του ύψους. και επειδή απαιτείται επίσης ο περιορισμός της αναλογίας πλευρών, μπορεί να μεγιστοποιηθεί το μέγεθος του υποβιβασμού κατά μήκος ενός άξονα (εκτός αν ο περιέκτης έχει την ίδια αναλογία διαστάσεων με την υποέκθεση).</p><p>έτσι πρώτα δημιουργώ τον περιορισμό της αναλογίας διαστάσεων:</p><p><img src="https://i.stack.imgur.com/4ihow.gif" alt="top aspect"></p><p>στη συνέχεια, δημιουργώ ίσους περιορισμούς πλάτους και ύψους με το δοχείο:</p><p><img src="https://i.stack.imgur.com/vycag.gif" alt="top equal size"></p><p>πρέπει να επεξεργαστώ αυτούς τους περιορισμούς ώστε να είναι λιγότερο από-ή-ίσους περιορισμούς:</p><p><img src="https://i.stack.imgur.com/bc7rh.gif" alt="top less than or equal size"></p><p>στη συνέχεια πρέπει να δημιουργήσω ένα άλλο σύνολο ίσων περιορισμών πλάτους και ύψους με το δοχείο:</p><p><img src="https://i.stack.imgur.com/u9hkm.gif" alt="top equal size again"></p><p>και πρέπει να θέσω τους νέους αυτούς περιορισμούς λιγότερο από την απαιτούμενη προτεραιότητα:</p><p><img src="https://i.stack.imgur.com/i7dte.gif" alt="top equal not required"></p><p>τελικά, ζητήσατε να είναι κεντραρισμένο το υποπεριοχή στο δοχείο του, οπότε θα ρυθμίσω αυτούς τους περιορισμούς:</p><p><img src="https://i.stack.imgur.com/4dtr1.gif" alt="top centered"></p><p>τώρα, για να δοκιμάσετε, θα επιλέξω τον ελεγκτή προβολής και θα ζητήσω από το xcode να ενημερώσει όλα τα πλαίσια. αυτό έχω:</p><p><img src="https://i.stack.imgur.com/kmtoy.png" alt="incorrect top layout"></p><p>ωχ! το subview έχει επεκταθεί για να γεμίσει πλήρως το δοχείο του. αν το επιλέξω, μπορώ να δω ότι στην πραγματικότητα διατηρείται η αναλογία του, αλλά κάνει μια πτυχή - <strong> συμπληρώστε </strong> αντί για μια πτυχή - <strong> ταιριάζει </strong>.</p><p>το πρόβλημα είναι ότι σε έναν λιγότερο από ή ίσο περιορισμό, έχει σημασία ποια είναι η άποψη σε κάθε άκρο του περιορισμού, και το xcode έχει δημιουργήσει τον περιορισμό απέναντι από την προσδοκία μου. θα μπορούσα να επιλέξω καθέναν από τους δύο περιορισμούς και να αντιστρέψω το πρώτο και δεύτερο στοιχείο. αντ 'αυτού, θα επιλέξω μόνο το subview και θα αλλάξω τους περιορισμούς ώστε να είναι μεγαλύτερο από-ή-ίσο:</p><p><img src="https://i.stack.imgur.com/mh4xm.gif" alt="fix top constraints"></p><p>το xcode ενημερώνει τη διάταξη:</p><p><img src="https://i.stack.imgur.com/srvqg.png" alt="correct top layout"></p><p>τώρα κάνω όλα τα ίδια πράγματα με τη σκούρα πράσινη θέα στο κάτω μέρος. πρέπει να σιγουρευτώ ότι η αναλογία πλευρών είναι 1: 4 (το xcode το μείωσε με περίεργο τρόπο αφού δεν είχε περιορισμούς). δεν θα δείξω τα βήματα ξανά, αφού είναι τα ίδια. εδώ είναι το αποτέλεσμα:</p><p><img src="https://i.stack.imgur.com/kdj1r.png" alt="correct top and bottom layout"></p><p>τώρα μπορώ να το εκτελέσω στον προσομοιωτή iphone 4s, ο οποίος έχει διαφορετικό μέγεθος οθόνης από τον ib που χρησιμοποιείται και δοκιμή περιστροφής:</p><p><img src="https://i.stack.imgur.com/hpa6w.gif" alt="iphone 4s test"></p><p>και μπορώ να δοκιμάσω στο iphone 6 προσομοιωτή:</p><p><img src="https://i.stack.imgur.com/otbq9.gif" alt="iphone 6 test"></p><p>έχω ανεβάσει τον τελικό πίνακα ιστορικού μου στο <a href="https://gist.github.com/mayoff/d9320088ab4025c95e40">αυτό το gist</a> για την ευκολία σας.</p>