<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Πρώτα Βήματα - Βάσεις δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/73/ShowForum.aspx</link><description>Για όσους κάνουν τα πρώτα τους βήματα στην Microsoft Access ή τον SQL Server, ή γενικότερα στη θεωρία βάσεων δεδομένων.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Αναφορά σε πεδίο πίνακα που δεν είναι κλειδί</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24994.aspx</link><pubDate>Wed, 14 Feb 2007 21:09:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24994</guid><dc:creator>Anastasia_M</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24994.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24994</wfw:commentRss><description>&lt;P&gt;ευχαριστώ για την ιδέα θα προσπαθήσω να την εφαρμόσω..πρόκειται για κάποια άσκηση με συγκεκριμένα constraints κ το c δεν εχει&amp;nbsp;κανέναν περιορισμό, ούτε είναι μοναδικό..&lt;/P&gt;</description></item><item><title>Απ: Αναφορά σε πεδίο πίνακα που δεν είναι κλειδί</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24982.aspx</link><pubDate>Wed, 14 Feb 2007 19:11:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24982</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24982.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24982</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Anastasia_M:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;
&lt;P&gt;Καλησπέρα..Προσπαθώ να βρω το εξής.Έχω τον πίνακα p1(a,b,c)με κυρίως κλειδί το a και τον πίνακα p2(d,e,f) με κυρίως κλειδι το d και θέλω το f να αναφέρεται στο πεδίο c του p1(δηλαδή κάθε φορά που θα γίνεται εισαγωγή πλειάδας στον p2 και θα πάει να καταχωρηθεί τιμή στο f να γίνεται ο έλεγχος αν η τιμή που πάει να μπει στο f υπάρχει ήδη ως τιμή του c στον p1-πιο απλά θέλω για κάθε τιμή που πάει να μπεί στο f να γίνεται έλεγχος αν υπάρχει η τιμή αυτό στο c&amp;nbsp;) μου φαίνεται κάτι ανάλογο με το foreign key&amp;nbsp; αλλά δν ειναι το ίδιο γιατί το c δν είναι κλειδί σωστά?γίνεται να έχω reference χωρίς foreign key?πως μπορώ να το γράψω αυτό σε sql κατά τη δημιουργία του πίνακα p2?ευχαριστώ πολύ&lt;/P&gt;
&lt;P&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;To ερώτημα είναι αν οι τιμές του πεδίου&amp;nbsp;c είναι μοναδικές ή όχι. Αν είναι μοναδικές, μπορείς να βάλεις στο πεδίο c ένα unique constraint και τότε θα σου επιτραπεί να ορίσεις primary/foreign key σχέση μεταξύ των p1.c και p2.f (κι ας είναι primary key το p1.a). &lt;/P&gt;
&lt;P&gt;Τώρα, αν οι τιμές του πεδίου C δεν είναι μοναδικές αλλά έχεις την ανάγκη που περιγράφεις, μου μυρίζει προβληματική σχεδίαση της βάσης (εκτός αν μιλάμε για άσκηση). Προσωπικά ποτέ δεν μου έχει παρουσιαστεί η ανάγκη να κάνω κάτι τέτοιο...&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Αναφορά σε πεδίο πίνακα που δεν είναι κλειδί</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24971.aspx</link><pubDate>Wed, 14 Feb 2007 11:14:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24971</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24971.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24971</wfw:commentRss><description>&lt;P&gt;Ενας τρόπος να το κάνεις είναι ο παρακάτω (σε SQL Server 2000, προφανώς όμως ισχύει και για 2005):&lt;/P&gt;
&lt;P&gt;Ας υποθέσουμε οτι όλα τα πεδία a,b,c,d,e,f των p1, p2 είναι τύπου int για ευκολία. Επίσης ας υποθέσουμε (δεν παίζει ρόλο στο τέλος, απλά για το παράδειγμα) οτι τα primary keys a και d είναι identity (autonumber) πεδία.&lt;/P&gt;
&lt;P&gt;Ας κατασκευάσουμε τον πίνακα p1:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;TABLE&lt;/SPAN&gt; [dbo].[p1] (&lt;BR&gt;&amp;nbsp;&amp;nbsp;a [&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;int&lt;/SPAN&gt;] &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;IDENTITY&lt;/SPAN&gt; (1, 1) &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;NOT&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;NULL&lt;/SPAN&gt; ,&lt;BR&gt;&amp;nbsp;&amp;nbsp;b [&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;int&lt;/SPAN&gt;] &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;NULL&lt;/SPAN&gt; ,&lt;BR&gt;&amp;nbsp;&amp;nbsp;c [&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;int&lt;/SPAN&gt;] &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;NULL&lt;/SPAN&gt; &lt;BR&gt;) &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;ON&lt;/SPAN&gt; [&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;PRIMARY&lt;/SPAN&gt;]&lt;BR&gt;GO&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;(Σημείωση: Για να μην γίνει τεράστιο το post δεν βάζω και τα primary key constraints μια και δεν αφορούν το συγκεκριμένο θέμα)&lt;/P&gt;
&lt;P&gt;Εφόσον το c δεν έχει τίποτα επάνω του, ο μόνος τρόπος για να πάρουμε τις τιμές που περιέχει το C μοναδικά είναι να κάνουμε ένα &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;SELECT&lt;/SPAN&gt; DINSTINCT p1.c &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;FROM&lt;/SPAN&gt; p1&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Ετσι λοιπόν θα μπορούσαμε δυνητικά να κατασκευάσουμε τον δεύτερο πίνακα (που έχει τον έλεγχο στο πεδίο f) ως εξής:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;TABLE&lt;/SPAN&gt; [dbo].[p2] (&lt;BR&gt;&amp;nbsp;&amp;nbsp;d [&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;int&lt;/SPAN&gt;] &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;IDENTITY&lt;/SPAN&gt; (1, 1) &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;NOT&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;NULL&lt;/SPAN&gt; ,&lt;BR&gt;&amp;nbsp;&amp;nbsp;e [&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;int&lt;/SPAN&gt;] &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;NULL&lt;/SPAN&gt; ,&lt;BR&gt;&amp;nbsp;&amp;nbsp;f [&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;int&lt;/SPAN&gt;] &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;NULL&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;check&lt;/SPAN&gt; (f &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;in&lt;/SPAN&gt; (&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;DISTINCT&lt;/SPAN&gt; p1.c &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;FROM&lt;/SPAN&gt; p1))&lt;BR&gt;) &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;ON&lt;/SPAN&gt; [&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;PRIMARY&lt;/SPAN&gt;]&lt;BR&gt;GO&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Αλλα αυτό δεν παίζει! Θα πάρουμε τα εξής μηνύματα:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Subqueries are not supported in CHECK constraints, table 'dbo.p2'.&lt;BR&gt;Column CHECK constraint for column 'f' references another column, table 'dbo.p2'.&lt;BR&gt;Invalid column 'c' is specified in a constraint or computed-column definition.&lt;BR&gt;Could not create constraint. See previous errors.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Και είναι φυσικό, μια και "Subqueries are not supported in CHECK constraints". Αρα πρέπει να βρούμε έναν άλλο τρόπο να κάνουμε τη δουλειά μας. Ετσι, μπορούμε να φτιάξουμε μια UDF (user-defined function) ως εξής:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;FUNCTION&lt;/SPAN&gt; [dbo].[myCheck] (@myparam &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;int&lt;/SPAN&gt;) &lt;BR&gt;RETURNS &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;bit&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;AS&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;BEGIN&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;DECLARE&lt;/SPAN&gt; @retVal &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;bit&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;IF&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;EXISTS&lt;/SPAN&gt; (&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;DISTINCT&lt;/SPAN&gt; p1.c &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;FROM&lt;/SPAN&gt; p1 &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;WHERE&lt;/SPAN&gt; p1.c = @myparam)&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;BEGIN&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;SET&lt;/SPAN&gt; @retVal =1&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;END&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;ELSE&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;BEGIN&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;SET&lt;/SPAN&gt; @retVal =0&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;END&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;RETURN&lt;/SPAN&gt; @retVal&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;END&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Η οποία θα δέχεται ως παράμετρο μια τιμή και θα μας γυρνάει 1 αν η τιμή υπάρχει στο p1.c πεδίο ή 0 αν δεν υπάρχει. Φυσικά, η τιμή που θα της περνάμε θα είναι η τιμή του πεδίου f. &lt;/P&gt;
&lt;P&gt;Για να τη χρησιμοποιήσουμε στο CHECK constraint μας, φτιάχνουμε τον πίνακα p2 ως εξής:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;TABLE&lt;/SPAN&gt; [dbo].[p2] (&lt;BR&gt;&amp;nbsp;&amp;nbsp;d [&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;int&lt;/SPAN&gt;] &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;IDENTITY&lt;/SPAN&gt; (1, 1) &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;NOT&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;NULL&lt;/SPAN&gt; ,&lt;BR&gt;&amp;nbsp;&amp;nbsp;e [&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;int&lt;/SPAN&gt;] &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;NULL&lt;/SPAN&gt; ,&lt;BR&gt;&amp;nbsp;&amp;nbsp;f [&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;int&lt;/SPAN&gt;] &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:silver;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;NULL&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;check&lt;/SPAN&gt; (dbo.myCheck(f)=1)&lt;BR&gt;) &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;ON&lt;/SPAN&gt; [&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;PRIMARY&lt;/SPAN&gt;]&lt;BR&gt;GO&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Με το check (dbo.myCheck(f)=1), σε κάθε εγγραφή που γίνεται insert ή update στον πίνακα p2 ελέγχεται μέσω της udf η τιμή του f για το αν υπάρχει στο πεδίο c του πίνακα p1. &lt;/P&gt;
&lt;P&gt;Φυσικά, όπως ανέφερα, αυτός είναι ο ένας τρόπος. Ο άλλος τρόπος είναι με τη χρήση triggers. Σταματάω όμως εδώ για τώρα μια και είναι αρκετά αργά :) Ελπίζω να μην σε μπέρδεψα πολύ!&lt;/P&gt;</description></item><item><title>Απ: Αναφορά σε πεδίο πίνακα που δεν είναι κλειδί</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24967.aspx</link><pubDate>Wed, 14 Feb 2007 09:35:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24967</guid><dc:creator>Anastasia_M</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24967.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24967</wfw:commentRss><description>&lt;P&gt;ναι θα χρησιμοποιήσω sql server 2005 και το c δν εχει κανενα περιορισμο τπτ απολυτως ειναι ετσι σκέτο...χωρις κανενα constraint tpt&lt;/P&gt;</description></item><item><title>Απ: Αναφορά σε πεδίο πίνακα που δεν είναι κλειδί</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24964.aspx</link><pubDate>Wed, 14 Feb 2007 08:12:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24964</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24964.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24964</wfw:commentRss><description>&lt;P&gt;Υποθέτοντας οτι χρησιμοποιείς SQL Server, μπορώ να σου πω οτι μπορείς να κάνεις τα εξής:&lt;/P&gt;
&lt;P&gt;Αν έχεις UNIQUE index ή constraint στο πεδίο c τότε μπορείς να βάλεις foreign key constraint στο f. &lt;/P&gt;
&lt;P&gt;Αν δεν έχεις κάτι τέτοιο, τότε θα πρέπει να υλοποιήσεις ένα CHECK constraint. Δυστυχώς, ο SQL Server (αν φυσικά δουλεύεις με αυτό το RDBMS) δεν επιτρέπει subqueries του τύπου CHECK (f IN (SELECT&amp;nbsp;[DISTINCT] p1.c&amp;nbsp;FROM p1&amp;nbsp;)). Για να έχεις το αποτέλεσμα που θέλεις, θα πρέπει να φτιάξεις μια UDF (user-defined function) που να κάνει τον ίδιο έλεγχο και να τη χρησιμοποιήσεις στο CHECK constraint σου.&lt;/P&gt;
&lt;P&gt;Αν σε μπέρδεψα, ζητώ συγνώμη. Αναφέρομαι σε υλοποίηση για τον SQL Server. Αν τυχόν δουλεύεις ANSI SQL τότε μπορείς να υλοποιήσεις CHECK constraint με subquery. Ομως, για να μην πάω παρακάτω και τα κάνω ακόμα πιό περίπλοκα, θα περιμένω να μου πεις με τι ακριβώς δουλεύεις.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Αναφορά σε πεδίο πίνακα που δεν είναι κλειδί</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24955.aspx</link><pubDate>Wed, 14 Feb 2007 07:14:09 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24955</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24955.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24955</wfw:commentRss><description>&lt;P&gt;Για να δώσουμε μια σωστή απάντηση χρειαζόμαστε την πληροφορία για το αν σου ζητείται να γράψεις ANSI SQL ή κάποια συγκεκριμένη διάλεκτο (π.χ. T-SQL του SQL Server). Ποιό RDBMS χρησιμοποιείς;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Αναφορά σε πεδίο πίνακα που δεν είναι κλειδί</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24940.aspx</link><pubDate>Wed, 14 Feb 2007 03:42:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24940</guid><dc:creator>Anastasia_M</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24940.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24940</wfw:commentRss><description>&lt;P&gt;Καλησπέρα..Προσπαθώ να βρω το εξής.Έχω τον πίνακα p1(a,b,c)με κυρίως κλειδί το a και τον πίνακα p2(d,e,f) με κυρίως κλειδι το d και θέλω το f να αναφέρεται στο πεδίο c του p1(δηλαδή κάθε φορά που θα γίνεται εισαγωγή πλειάδας στον p2 και θα πάει να καταχωρηθεί τιμή στο f να γίνεται ο έλεγχος αν η τιμή που πάει να μπει στο f υπάρχει ήδη ως τιμή του c στον p1-πιο απλά θέλω για κάθε τιμή που πάει να μπεί στο f να γίνεται έλεγχος αν υπάρχει η τιμή αυτό στο c&amp;nbsp;) μου φαίνεται κάτι ανάλογο με το foreign key&amp;nbsp; αλλά δν ειναι το ίδιο γιατί το c δν είναι κλειδί σωστά?γίνεται να έχω reference χωρίς foreign key?πως μπορώ να το γράψω αυτό σε sql κατά τη δημιουργία του πίνακα p2?ευχαριστώ πολύ&lt;/P&gt;</description></item></channel></rss>