Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Unique Values Column (Non Identity Column)

Îåêßíçóå áðü ôï ìÝëïò Τάσκος Γιώργος. Τελευταία δημοσίευση από το μέλος Τάσκος Γιώργος στις 06-03-2009, 21:19. Υπάρχουν 14 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  06-03-2009, 01:16 48937

    Unique Values Column (Non Identity Column)

    Γειά σας παιδιά,

    Μια ερώτηση έχω, χθές έφτιαχνα μια SQL 2005 βάση στο Visual Studio,
    κι ενώ (για κάποιο λόγο) θυμόμουνα ότι είναι εύκολο να κάνω unique τις
    τιμές κάποιου column εκτός από την Identity Column, ανακάλυψα πως δεν γίνετε
    και τόσο απλά (με ένα property ας πούμε). Θέλω να γίνει αυτό σε 3 columns
    μέσα στην βάση εκτος του ID.
    Πρέπει να γίνει σε επίπεδο κώδικα validation αυτό?
    Κάποια σύσταση?

    Ευχαριστώ εκ των προτέρων...

  •  06-03-2009, 01:46 48939 σε απάντηση της 48937

    Απ: Unique Values Column (Non Identity Column)

    Αν θες να το κάνεις στη βάση, θα πρέπει να προσθέσεις ένα επιπλέον Index με τα τρία columns, το οποίο θα ορίσεις unique. Όσον αφορά στο datatable το validation πρέπει να γίνει μέσω κώδικα.
    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  06-03-2009, 01:51 48940 σε απάντηση της 48939

    Απ: Unique Values Column (Non Identity Column)

    Είμαι άπειρος σχετικά με SQL και δεν ποιάνω το (θα πρέπει να προσθέσεις ένα επιπλέον Index με τα τρία columns). Υπάρχει τρόπος να με παραθέσεις σε κάποιο παράδειγμα?

  •  06-03-2009, 02:00 48941 σε απάντηση της 48940

    Απ: Unique Values Column (Non Identity Column)

    Αυτό είναι το εύκολο. Το άλλο έχει λίγο δουλειά. Στο Visual Studio, ανοίγεις τον Server Explorer και ανοίγεις με διπλό κλικ το Table που θέλεις να επεξεργαστείς. Με δεξί κλικ επιλέγεις Indexes/Keys στο popup menu. Στο dialog box που θα εμφανιστεί κάνεις "Add" και στο Columns property ορίζεις τις στήλες που θέλεις να έχει ο Index. Τέλος, το "Is Unique" property το κάνεις true. Α! Μην ξεχάσεις να δώσει ένα όνομα στο Index. Μετά κάνεις close και αποθηκεύεις τις αλλαγές στο Table.


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  06-03-2009, 02:18 48942 σε απάντηση της 48941

    Απ: Unique Values Column (Non Identity Column)

    Thanx Markos, τώρα μένει να κάνω και λίγο validation....

  •  06-03-2009, 02:30 48943 σε απάντηση της 48942

    Απ: Unique Values Column (Non Identity Column)

    Βλακεία μου... Μπορεί το Validation να το κάνει το Visual Studio για σένα. Απλά πήγαινε στον DataSet Designer, επέλεξε το DataTable, κάνε δεξί κλικ και στο popup menu κάνε "Add Key". "Τσεκάρισε" τις τρεις στήλες που θέλεις και αυτό είναι όλο! Το identity column που αναφέρεις πιο πάνω σίγουρα θα είναι primary key. Οπότε στον Designer θα εμφανιστούν τέσσερα κλειδάκια. Μην πανικοβληθείς. Το ένα αντιστοιχεί στο primary key και τα υπόλοιπα τρία μαζί στο νέο key που έβαλες. Αυτό μπορείς να το ελέγξεις και από τα properties αυτών των keys (με δεξί κλικ).


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  06-03-2009, 09:26 48945 σε απάντηση της 48943

    Απ: Unique Values Column (Non Identity Column)

    You saved the day :)

    Thanx

  •  06-03-2009, 10:14 48947 σε απάντηση της 48945

    Απ: Unique Values Column (Non Identity Column)

    Παιδιά, υπερβάλλετε! Υπερβολικά!

    Άλλο το Dataset και άλλο οι πίνακες στον SQL Server. Αν θέλετε να ορίσετε ότι κάποια πεδία θα έχουν unique τιμές το κάνετε ορίζοντας ένα UNIQUE constraint . Για ένα πίνακα που ήδη υπάρχει αυτό γίνεται με την εντολή ALTER TABLE MyTable
    ADD CONSTRAINT ID_MYTABLE_UNIQUE1 UNIQUE (Column1, Column2, Column3)

    Δεν χρειάζεται ούτε validation με κώδικα, ούτε τίποτε άλλο. Για να οριστεί ένα unique constraint μέσα από το Visual Studio θα πάτε στον Table Designer, θα επιλέξετε Indexes/Keys και εκεί θα βάλετε το constraint. Αυτό περιγράφεται στο How to: Create Unique Constraints (Visual Database Tools)

    Για να αποφύγετε τέτοια προβλήματα στο μέλλον καλό είναι να συμβουλεύεστε τo documentation του SQL Server. Είναι πολύ κατατοπιστικό και γεμάτο από How-To και Step-by-Step, ειδικά για βασικά πράγματα όπως τα constraints. Έτσι γλυτώνετε και το χρόνο που θα ξοδεύατε δημιουργώντας μία προβληματική λύση, αλλά και το χρόνο που θα χάσετε στο μέλλον συντηρώντας την και αντιμετωπίζοντας τα προβλήματα που θα δημιουργήσει.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  06-03-2009, 11:49 48951 σε απάντηση της 48947

    Απ: Unique Values Column (Non Identity Column)

    Το Link που έδωσες στο HowTo, σε τι διαφέρει από εκείνο που πρότεινα για την εισαγωγή unique constraint στη βάση; Πάλι από τα Indexes/Keys δεν το ορίζεις ή μου διαφεύγει κάτι;


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  06-03-2009, 12:17 48953 σε απάντηση της 48951

    Απ: Unique Values Column (Non Identity Column)

    Αναφέρεσαι σε Index και όχι σε constraint. Αυτό είναι σημαντική διαφορά, γιατί το unique constraint ΔΕΝ είναι και index.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  06-03-2009, 12:23 48954 σε απάντηση της 48953

    Απ: Unique Values Column (Non Identity Column)

    Το είδα, έστω και καθυστερημένα...
    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  06-03-2009, 13:44 48955 σε απάντηση της 48954

    Απ: Unique Values Column (Non Identity Column)

    Η παρατήρηση του Παναγιώτη με έκανε να ψάξω λίγο περισσότερο το θέμα ανάμεσα στο Unique Index Vs Unique Constraint. Για όποιον ενδιαφέρεται βρήκα αυτό. Πιστεύω ότι όποιος έχει να κάνει κάποια άλλη παρατήρηση θα βοηθήσει και το thread, μιας και δε νομίζω ότι βγαίνουμε off topic.
    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  06-03-2009, 18:25 48963 σε απάντηση της 48955

    Απ: Unique Values Column (Non Identity Column)

    Πάνο, ευχαριστώ :)

  •  06-03-2009, 20:06 48964 σε απάντηση της 48963

    Απ: Unique Values Column (Non Identity Column)

    Γίνεται να τα κάνω όλα by the book και πάλι να δέχετε ίδιες τιμές?

  •  06-03-2009, 21:19 48965 σε απάντηση της 48937

    Απ: Unique Values Column (Non Identity Column)

    Παιδιά μετά απο κανα δυο chapters και λίγο ψάξιμο η λύση ηταν πάντα ίδια,
    τώρα για ποιο λόγο δεν μου δέχεται πάνω απο μια column σε ενα index δεν
    το καταλαβαίνω, έκανα 3 διαφορετικά Indexes και παίζει!

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems