Autor |
Beitrag |
moloch 
      
Beiträge: 451
Win 2000
D5 Prof
|
Verfasst: Mi 20.05.09 11:44
... und zurück zur eigentlich frage wäre es noch wichtig für mich zu wissen wie die sql befehle lauten für MSSQL, MySQL und ORACLE den Primary Key zu löschen und anzulegen.
|
|
moloch 
      
Beiträge: 451
Win 2000
D5 Prof
|
Verfasst: Mi 20.05.09 11:47
Zitat: | Naja, du darfst nicht vergessen, dass das immer Speicher weg nimmt. Irgendwo muss der Index ja abgelegt werden.
Außerdem muss das DBMS bei der Selektion entscheiden, welchen Index es am besten benutzt. Hast du zuviele, kann es passieren, dass es vielleicht einen anderen wählt, als du erwartest. |
ah ok. ja macht sinn.
|
|
Ramon
      
Beiträge: 107
WIN7
D6 Prof, D7 Prof, D 2009
|
Verfasst: Mi 20.05.09 11:50
|
|
moloch 
      
Beiträge: 451
Win 2000
D5 Prof
|
Verfasst: Mi 20.05.09 13:20
SQL-Anweisung
löscht den jeweiligen Primärindex?
|
|
Ramon
      
Beiträge: 107
WIN7
D6 Prof, D7 Prof, D 2009
|
Verfasst: Mi 20.05.09 13:28
|
|
moloch 
      
Beiträge: 451
Win 2000
D5 Prof
|
Verfasst: Mi 20.05.09 13:37
wegschmeissen tue ich den primärindex auch nur weil ich ihn im grunde updaten will. also erst löschen alle dann wieder richtig anlegen mit z.b. einem primärindex auf irgendeiner spalte mehr.
für mssql funktionieren die sqls schon mal nicht die du geschrieben hast. für mysql ja.
|
|
moloch 
      
Beiträge: 451
Win 2000
D5 Prof
|
Verfasst: Mi 20.05.09 13:43
ist indize = index
oder ist indize ein anderes wort für primärindex?
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 20.05.09 14:12
Ganz einfach:
Index = Singular
Indize = Plural
Und bzgl. dem Anlegen: Der PK gehört auf nen AutoIncrement-Spalte, und ansonsten gehören auf eindeutige Spalten (oder Spaltensammlungen) ein UNIQUE-Constraint (+Index). Ansonsten auf alles nen Index, wonach häufig gefiltert wird.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
moloch 
      
Beiträge: 451
Win 2000
D5 Prof
|
Verfasst: Mi 20.05.09 14:22
bei oracle kriege ich bei dieser SQL
SQL-Anweisung 1:
| ALTER TABLE StatusP ADD (PRIMARY KEY (Datum)); |
diese Meldung
Zitat: | ORA-01449: Spalte enthält NULL-Werte; Änderung auf NOT NULL nicht möglich
|
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 20.05.09 14:30
Und was ist das Problem beim Lesen UND Verstehen der Fehlermeldung?
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
moloch 
      
Beiträge: 451
Win 2000
D5 Prof
|
Verfasst: Mi 20.05.09 14:43
ich möchte mit einer evtl auch 2 sqls einen primärindex dazufügen zu einer tabelle..
hier kriege ich beschrieben das ich eine einstellung machen müsste.. also wieder manuell.. kann ich das evtl auch mit einer sql lösen das problem?
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 20.05.09 14:55
Da liest Du die Meldung falsch: Da steht nämlich einfach nur, dass er das nicht ausführen kann, da derzeit NULL-Werte in der Tabele enthalten sind und dies gegen die von dem durch den PK bedingten Constraint nicht toleriert werden.
Lösung: Vor dem Hinzufügen des PKs dafür sorgen, dass es in der Spalte des PKs keine NULL-Werte mehr gibt (UND alle Werte eindeutig sind).
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
moloch 
      
Beiträge: 451
Win 2000
D5 Prof
|
Verfasst: Mi 20.05.09 14:58
ja das verstehe ich. die situation ist aber die folgende. es ist ein spalte zur tabelle hinzugekommen.. und genau diese spalte soll halt auch einen primär key bekommen. klar das da null drin ist oder? wenn ich die neu angelegt habe.. oder gibt es eine andere möglichkeit
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Mi 20.05.09 15:25
Dann musst Du die Spalte mit einem Standardwert belegen, da ja NULL nicht erlaubt ist.
1. Spalte hinzufügen (Null erlaubt)
2. Spalte mit Standardwerten füllen
3. Spalte ändern (auf NULL nicht erlaubt)
4. Spalten in den Primary Key aufnehmen
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
moloch 
      
Beiträge: 451
Win 2000
D5 Prof
|
Verfasst: Mi 20.05.09 15:31
kann man nicht die einstellung vornehmen null erlaubt und dann den primary anlegen.. das würde ich für sinnvoll halten.. geht das nicht?
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 20.05.09 15:43
nein, kann nicht gehen, da ein Primary Key niemals null sein kann, er wäre dann nicht mehr eindeutig.
Ich frage mich die ganze zeit, warum du überhaupt so merkwürdige sachen wie Key's löschen und indexe neu erstellen machen willst ... Scheint mir, als ob da das Konzept generell überarbeitungswürdig ist ...
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
moloch 
      
Beiträge: 451
Win 2000
D5 Prof
|
Verfasst: Mi 20.05.09 15:45
@zuma
ich habe schon oft geschrieben warum..
es ist im grunde ein update auf die jeweilige tabelle. es ist einfach eine spalte dazu gekommen und die soll auch einen prima haben. update sql klappt nicht oder ist noch nicht komplett beschrieben worden hier. also war der einfall erstdie primas löschen dann alle anlegen zusammen...
|
|
Ramon
      
Beiträge: 107
WIN7
D6 Prof, D7 Prof, D 2009
|
Verfasst: Mi 20.05.09 15:59
Soll die neue Spalte mit in den Primary Key aufgenommen werden? Also ein Schlüssel aus mehreren Spalten? Das sollte kein Problem sein.
Oder soll Datum der Schlüssel werden?
In dem Fall mußt du die Spalte Datum erst mit eindeutigen Inhalt füllen.
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 20.05.09 16:01
nee, is nich einfach nur nen Update ...
Primary key = primärer Schlüssel <- davon kanns nur einen geben, sagt ja schon der Name
die neue Spalte soll also ENTWEDER mit in den PK aufgenommen werden ODER unique (eindeutig) sein
also, entweder primärer key oder alternativer key, aber nie 2 primäre key's
so legste z.b. einen 2ten key an:
alter table tabellenname add constraint tabellenname_AKEY unique (spalte); (akey = abk. für alternate key)
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
moloch 
      
Beiträge: 451
Win 2000
D5 Prof
|
Verfasst: Mi 20.05.09 16:15
also der key soll dazu kommen
|
|