stud3 Geschrieben 4. Februar 2005 Teilen Geschrieben 4. Februar 2005 hallo, ich habe die Spalten Produkt_id, Dienstleistungs_ID, Produkt und Report in meiner Tabelle. Als Primärschlüssel habe ich die Produkt_id genommen, da diese den Datensatz eindeutig identifiziert. Ich arbeite mit einem SQL Server, dort gibt es die Möglichkeit die Produkt_id autonummerisch oder nicht autonummerisch festzulegen. Nun würde ich gerne wissen, wie ich mit ASP doppelte Einträge in meiner Tabelle vermeiden kann, mit der Abfrage "SELECT DISTINCT" habe ich schon ausprobiert, aber es wirkt nicht. Noch ein Punkt am Beispiel, vermuten wir ich habe folgende Einträge Produkt_id Dienstleistungs_ID Produkt Report 1 1 x1 y1 2 4 x2 y2 Wenn der Benutzer versuchen würde, einen Eintrag wie 3 4 x2 y3 hinzuzufügen, dann würde es jetzt ein Produkt namens x2 mit 2 Produkt_ids geben, und das ist nicht was ich möchte, könnte man sowas mit ASP vermeiden, so dass auch der Benutzer eine Fehlermeldung bekommt? oder die Änderungen müssen direkt in der Tabelle in der Datenbank vorgenommen werden. Für Hilfe wäre ich dankbar. Gruß. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 4. Februar 2005 Teilen Geschrieben 4. Februar 2005 Hallo, also ASP ist jetzt nicht meine Stäre aber Du mußt vor dem insert mit guter alter Handarbeit prüfen ob so ein Eintrag schon existiert. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ringo Geschrieben 4. Februar 2005 Teilen Geschrieben 4. Februar 2005 hi. ich weiß jetzt nicht genau ob ich richtig liege, aber kannst du nicht deiner spalte "Produkt" in der Datenbank die eigenschaft "unique" geben??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 5. Februar 2005 Teilen Geschrieben 5. Februar 2005 hi. ich weiß jetzt nicht genau ob ich richtig liege, aber kannst du nicht deiner spalte "Produkt" in der Datenbank die eigenschaft "unique" geben??? Meine Meinung, leg einen Unique Index auf die Spalten und schon wird bei einem "Insert"-Versuch die Datenbank einen Fehler ausspucken Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stud3 Geschrieben 6. Februar 2005 Autor Teilen Geschrieben 6. Februar 2005 Klar, aber das wollte ich durch eine Meldung mit ASP auspacken. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 6. Februar 2005 Teilen Geschrieben 6. Februar 2005 Dann mach doch vorher ein Select auf die DB. Wenn Du einen Eintrag zurück bekommst dann steht der schon mal drin. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 6. Februar 2005 Teilen Geschrieben 6. Februar 2005 die nummer produkt_id von der datenbank automatisch vergeben, fortlaufend ... das gibt es doch in jeder DB ... setz mal ein select in eine datenbank mit 10000000 einträgen und suche dann die nummer die frei ist Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 6. Februar 2005 Teilen Geschrieben 6. Februar 2005 ??? Er will doch wissen ob x2 schon in der DB steht. select * from tabelle where Produkt = 'x2' Kommt ein Datensatz zurück ist schon einer drin. Kommt keiner ist das Produkt noch nicht eingetragen. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
BayK Geschrieben 6. Februar 2005 Teilen Geschrieben 6. Februar 2005 wie ich deinen postings entnehmen kann soll die spalte produkt einzigartig sein oder??? warum dann nicht die produkt-spalte als primary key hernehmen.... aber so grundsätzlich würde ich sagen dass der produktname nicht einzigartig sein müsste.... die einzigartigkeit sollte durch die ID gegeben werden.... und net durch den namen...... btw: so entspricht das rm net den normalformen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
/dev/null Geschrieben 8. Februar 2005 Teilen Geschrieben 8. Februar 2005 hallo, ich habe die Spalten Produkt_id, Dienstleistungs_ID, Produkt und Report in meiner Tabelle. Als Primärschlüssel habe ich die Produkt_id genommen, da diese den Datensatz eindeutig identifiziert. Ich arbeite mit einem SQL Server, dort gibt es die Möglichkeit die Produkt_id autonummerisch oder nicht autonummerisch festzulegen. Nun würde ich gerne wissen, wie ich mit ASP doppelte Einträge in meiner Tabelle vermeiden kann, mit der Abfrage "SELECT DISTINCT" habe ich schon ausprobiert, aber es wirkt nicht. Noch ein Punkt am Beispiel, vermuten wir ich habe folgende Einträge Produkt_id Dienstleistungs_ID Produkt Report 1 1 x1 y1 2 4 x2 y2 Wenn der Benutzer versuchen würde, einen Eintrag wie 3 4 x2 y3 hinzuzufügen, dann würde es jetzt ein Produkt namens x2 mit 2 Produkt_ids geben, und das ist nicht was ich möchte, könnte man sowas mit ASP vermeiden, so dass auch der Benutzer eine Fehlermeldung bekommt? oder die Änderungen müssen direkt in der Tabelle in der Datenbank vorgenommen werden. Für Hilfe wäre ich dankbar. Gruß. Gib´ mal etwas mehr Infos bitte. Die Produkt_id wird wahrscheinlich auto_increment sein, oder? Ich verstehe das so, dass nie ein Datensatz die gleiche Produkt-Nr. und Dienstleistungs_ID haben soll/darf, oder? Wenn ja, dann leg´ doch einfach einen Primärschlüssel auf diese beiden Felder, so dass hier keine Doppeleinträge vorkommen können. Oder lieg´ ich jetzt komplett falsch? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stud3 Geschrieben 8. Februar 2005 Autor Teilen Geschrieben 8. Februar 2005 hallo, danke, danke Jungs, für Ihre Antworten, als PK habe ich Produkt_id genommen, aber ich habe schon geschafft mit einer Schleife, dass doppelte Einträge nicht hinzugefügt werden, da habe ich für die Produkt_id und das Produkt eine Bedingung geschrieben, damit sowohl die Spalten Produkt_id und Produkt nicht zweimal in der Tabelle vorkommen. Autonummerisch habe ich nicht die Produkt_id gesetzt, warum?, vermuten wir mal, der Benutzer hat einen Datensatz aus Versehen gelöscht, damit er den Fehler repariert, kann er einfach den Datensatz wieder hinzufügen, in der Eingabemaske würde dann als Textfeld auch die Produkt_id stehen. Ob ich da falsch stehe, weiss ich nicht. Auf jeden Fall würde ich sowas wie ein "History" in meiner Applikation hinzufügen, d.h. eine Liste der Datensätze, die gelöscht wurden mit Datum und Name des Benutzers, wäre das nicht eine gute Idee?... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
/dev/null Geschrieben 8. Februar 2005 Teilen Geschrieben 8. Februar 2005 hallo, danke, danke Jungs, für Ihre Antworten, als PK habe ich Produkt_id genommen, aber ich habe schon geschafft mit einer Schleife, dass doppelte Einträge nicht hinzugefügt werden, da habe ich für die Produkt_id und das Produkt eine Bedingung geschrieben, damit sowohl die Spalten Produkt_id und Produkt nicht zweimal in der Tabelle vorkommen. Autonummerisch habe ich nicht die Produkt_id gesetzt, warum?, vermuten wir mal, der Benutzer hat einen Datensatz aus Versehen gelöscht, damit er den Fehler repariert, kann er einfach den Datensatz wieder hinzufügen, in der Eingabemaske würde dann als Textfeld auch die Produkt_id stehen. Ob ich da falsch stehe, weiss ich nicht. Auf jeden Fall würde ich sowas wie ein "History" in meiner Applikation hinzufügen, d.h. eine Liste der Datensätze, die gelöscht wurden mit Datum und Name des Benutzers, wäre das nicht eine gute Idee?... Ok. Aber warum das Ganze mit einer Schleife abfangen, wenn es genügen würde, den Primärschlüssel nicht nur auf die Produkt_id zu legen, sondern zusätzlich auch auf Produkt? Damit gehst Du evtl. Logik-Fehler im Code aus dem Weg und die Datenbank ist somit wenigstens etwas den Normalformen ähnlich. Das mit der History ist m.E. im Allgemeinen eine gute Idee... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.