Laden...

Primary Key (ID) editieren

Erstellt von Ayke vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.292 Views
Ayke Themenstarter:in
643 Beiträge seit 2006
vor 16 Jahren
Primary Key (ID) editieren

verwendetes Datenbanksystem: MSSQL 05

Hi

Ich habe eine Tabelle wo ich einen PrimaryKey diesen habe ich ID gennant.
Nun möchte ich den Wert von ID bei einen Row ändern. Leider ist es schreibgeschutzt. Ist es trozdem irgenwie möglich ?

Dies brauche ich um Elemente in einer bestimmten Reinfolge anzuzeigen. Diese Reinfolge wird vor der Ansicht bestimmt.


Sorry das ich ImageShark verwende. Ich weiss leider nicht wo ich hier Bilder hochladen kann. Falls das überhaupt möglich ist.

Mich würde ausserdem interessieren ob es machbar ist das wenn ein Row gelöscht die ID's nachgepflegt werden.
z.b

  1. Row : ID=0;

  2. Row : ID=1;

  3. Row : ID=2; //wird gelöscht

  4. Row : ID=3;

  5. Row : ID=0;

  6. Row : ID=1;

  7. Row : ID=3; //Dieser soll jetzt automatisch auf 2 geändert werden.

3.430 Beiträge seit 2007
vor 16 Jahren

hallo Ayke,

So weit ich weis ist es nicht möglich die ID (Primary Key) zu ändern. Da das ja eine eindeutige Nummer ist, die auch nur einmal vergeben werden kann.

und das ist glaub ich auch nicht möglich

  1. Row : ID=0;

  2. Row : ID=1;

  3. Row : ID=2; //wird gelöscht

  4. Row : ID=3;

  5. Row : ID=0;

  6. Row : ID=1;

  7. Row : ID=3; //Dieser soll jetzt automatisch auf 2 geändert werden.

Du könntest aber eine T-Sql Funktion schreiben, welche dir die Daten bereits durch die Abfrage geordnet zurückgibt.

PS: Die Bilder kannst du einfach hochladen, indem du sie als Dateianhang hinzufügst (Ich habe da auch ne weile gesucht bis ichs gefunden habe 😄)

gruss
MichlG

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 16 Jahren

Hmm schade...

Hoffe ich finde eine andre möglichkeit

T
327 Beiträge seit 2006
vor 16 Jahren

Hallo,

wenn du den Primary-Key ändern willst dann musst du die entsprechende Zeile kopieren, d.h. eine neue und beim Kopieren der Werte die ID ändern...
Dabei musst du natürlich aufpassen wenn du Tabellen hast, die sich auf die ID beziehen, Stichwort "referentielle Integrität"...

T
153 Beiträge seit 2007
vor 16 Jahren

nö nö du, wenn man den primarykey ändern könnte, das wäre für die datenbank wohl sehr sehr sehr sehr gefährlich.

wenn du deine daten in einer bestimmten reihenfolge ausgeben möchtest, dann stellt sich die frage, womit du arbeitest bzw. arbeiten kannst. die daten in der anzeige zu manipulieren, da gibts 100000 möglichkeiten, aber den pk ändern, das ist wohl genau die, die HOFFENTLICH auch nie funktionieren wird.

du kannst deine daten in ein dataset, datatable, dataview laden, dort kannst du beliebig sortieren und filtern.

oder wenns ganz "natural" sein soll, schreib in den sql-statement rein, dass es die ausgabe sortieren soll (ASC oder DESC)....oder oder oder.

ich hoffe ich hab dir den ein oder anderen anhaltspunkt gegeben.

gruß
toxick

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo Ayke,

der PrimaryKey ist bei Datanbanken definitiv nicht dafür gedacht um eine Sortierreihenfolge vorzugeben. Der PrimaryKey ist für die Datenbank, da wird ein Index drauf gelegt und er ist als unique gekennzeichnet.

Warum ist das so? Damit die DB immer mittels einem Schlüssel sehr schnell auf den entsprechenden Datensatz zugreifen kann.

Eine Sortierung erreicht man normalerweise per SQL indem man das Schlüsselwort ORDER BY verwendet. Das bedeutet, dass die DB für das Resultset eine bestimmte Sortierung vornimmt, also noch vor der Anzeige, und noch vor der Übernahme in ein entsprechendes Datenobjekt.

Falls Du aus zwingenden Gründen doch auch eine Sortierung in der DB benötigst (halte ich aber für 99% ausgeschlossen), dann würde ich eine neue Spalte einführen, die die Sortierreihenfolge vorgibt. Das bedeutet aber erhähten administrativen und synchronischen Aufwand.

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 16 Jahren

danke für eure vorlschläge 👍