• 17.07.2025, 06:42
  • Register
  • Login
  • You are not logged in.

 

iNFiNiTE

God

sql: frage bzgl autoincrement, post #7

Monday, March 20th 2006, 1:34pm

siehe neue frage post #7



moin,

ich bin gerade dabei ne mysql db vom typ innodb aufzusetzen (aufgrund foreign keys), und versuche gerade das sample auf mysql.org zu verstehen:

Source code

1
2
3
CREATE TABLE eltern(id INT NOT NULL, PRIMARY KEY (id)) TYPE=INNODB;
CREATE TABLE kind(id INT, eltern_id INT, INDEX par_ind (eltern_id),
           FOREIGN KEY (eltern_id) REFERENCES eltern(id)) TYPE=INNODB;

soweit so gut, ist ja auch alles logisch, nur was hat es mit der zeile

Source code

1
INDEX par_ind (eltern_id)

auf sich ? hab bis dato ein bisschen mit interbase gearbeitet und hab noch nie sowas wie nen INDEX erstellt..

messi

crushcoder

God

Re: sql: was hat es mit dem INDEX auf sich ?

Monday, March 20th 2006, 2:43pm

Gott hat die Welt ja nur in sieben Tagen erschaffen können, weil es keine installierte Basis gab.

Y0Gi

God

Re: sql: was hat es mit dem INDEX auf sich ?

Monday, March 20th 2006, 3:44pm

Foreign Keys kannst du auch ohne Konvertierung setzen und in SQL entsprechend verwenden.

iNFiNiTE

God

Re: sql: was hat es mit dem INDEX auf sich ?

Monday, March 20th 2006, 4:35pm

@crushcoder
okay, danke das hat mir schon mal viel geholfen.. das einzige was ich jetz ned versteh ist dieses "par_ind" in dem bsp... ist das einfach nur ein name für den index zur besseren erkennung ?

@yogi
soweit man mir erzählt hat, unterstützt mysql(4.X) nur bei innodb foreign keys.


messi

Y0Gi

God

Re: sql: was hat es mit dem INDEX auf sich ?

Monday, March 20th 2006, 5:12pm

Foreign Keys benutzt und über Constraints bestimmte Abhängigkeiten sicherzustellen ist ein Unterschied. Kann sein, dass Constraints nur mit InnoDB funktionieren. Foreign Keys selbst sind ja zunächst nur Verknüpfungen im Modell, die man in Queries anwendet, von dessen Relationen "auf dem Papier" das DBMS aber nicht zwingend wissen muss.

crushcoder

God

Re: sql: was hat es mit dem INDEX auf sich ?

Monday, March 20th 2006, 5:27pm

auf die referenz bezogen:

Quoted

INDEX [index_name] [index_type] (index_col_name,...)


par_ind ist also der name des index.

darüber kann man nachher den index zb löschen oder ändern mit alter_table:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

Quoted

DROP INDEX index_name
Gott hat die Welt ja nur in sieben Tagen erschaffen können, weil es keine installierte Basis gab.

iNFiNiTE

God

Re: sql: was hat es mit dem INDEX auf sich ?

Wednesday, March 22nd 2006, 4:54pm

so...

phpmyadmin meckert noch bei einer zeile:

und zwar hab ich im table user eine spalte ID:

Source code

1
userid INT UNSIGNED AUTO_INCREMENT primary key


ich will nun aus dem table game darauf verweisen:

Source code

1
2
3
4
[....]
userid INT UNSIGNED AUTO_INCREMENT primary key
[...]
FOREIGN KEY (userid) REFERENCES user(userid)


nun gibt mir mysql folgendes aus:

Quoted


#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key


die meldung an sich verstehe ich ja.. wenn ich in der tabelle game nun die userid wie folgt umbaue:

Source code

1
userid INT UNSIGNED NOT NULL


also das auto increment raushole, dann funzt es.. wird denn die spalte userid dann trotzdem brav durchnummeriert, bzw verweist dann trotzdem korrekt auf die spalte userid aus dem table user ?

hoffe meine frage is einigermassen verständlich.. ;)

messi