Autor Beitrag
moloch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 451

Win 2000
D5 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 451

Win 2000
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 107

WIN7
D6 Prof, D7 Prof, D 2009
BeitragVerfasst: Mi 20.05.09 11:50 
user profile iconmoloch hat folgendes geschrieben Zum zitierten Posting springen:
... 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.


Oracle:
ausblenden SQL-Anweisung
1:
CREATE INDEX INDEXNAME ON TABELLENNAME (SPALTE1,SPALTE2,...) TABLESPACE TABLESPACENAME;					

Tablespace ist optional.

Im laufenden betrieb empfiehlt sich die Statistiken neu analysieren zu lassen:
ausblenden SQL-Anweisung
1:
analyze table TABELLENNAME compute statistics;					


Löschen:
ausblenden SQL-Anweisung
1:
DROP INDEX INDEXNAME;					
moloch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 451

Win 2000
D5 Prof
BeitragVerfasst: Mi 20.05.09 13:20 
ausblenden SQL-Anweisung
1:
DROP INDEX INDEXNAME					


löscht den jeweiligen Primärindex?
Ramon
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 107

WIN7
D6 Prof, D7 Prof, D 2009
BeitragVerfasst: Mi 20.05.09 13:28 
user profile iconmoloch hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden SQL-Anweisung
1:
DROP INDEX INDEXNAME					


löscht den jeweiligen Primärindex?


Ah, sorry, das oben gilt natürlich für Indizes. Muss sagen, ich werfe selten Schlüssel weg. Versuch mal sowas:
ausblenden SQL-Anweisung
1:
ALTER TABLE tabellenname DROP PRIMARY KEY;					


Anlegen kannst du ihn wieder mit:
ausblenden SQL-Anweisung
1:
ALTER TABLE tabellenname ADD (PRIMARY KEY (Spalte1, Spalte2...));					


Das Anlegen klappt natürlich nur, wenn der Schlüssel nicht verletzt wird, also nicht doppelt vorhanden ist.
moloch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 451

Win 2000
D5 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 451

Win 2000
D5 Prof
BeitragVerfasst: Mi 20.05.09 13:43 
ist indize = index
oder ist indize ein anderes wort für primärindex?
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 451

Win 2000
D5 Prof
BeitragVerfasst: Mi 20.05.09 14:22 
bei oracle kriege ich bei dieser SQL

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 451

Win 2000
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 451

Win 2000
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 451

Win 2000
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 451

Win 2000
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 107

WIN7
D6 Prof, D7 Prof, D 2009
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 451

Win 2000
D5 Prof
BeitragVerfasst: Mi 20.05.09 16:15 
also der key soll dazu kommen