Primary Key und "0"
am 28.11.2006 17:31:22 von Jan Schmidt
Hallo NG,
ich habe in einer Tabelle eine Spalte mit ID's einer anderen
Tabelle. Diese sind defaultmäÃig mit 0 belegt ist (also kein Eintrag
nötig). Nun kommt es manchmal vor, daà doch ein Wert eingetragen
werden muÃ. Um die Abfrage nicht zu kompliziert zu machen, wollte ich
die Null mit aufnehmen, das wird aber immer zu eins gemacht,
d.h. folgendes liefert einen Eintrag mit der ID 1, was auch logisch
ist.
Der einfachste Weg "NOT NULL" zu entfernen funktioniert nicht.
Gibts einen anderen Weg auÃer anstelle der 0 einen anderen Wert für
'keine' zu verwenden?
CREATE TABLE `sl_subversion` (
`ID` int(10) unsigned NOT NULL auto_increment,
`Beschreibung` varchar(100) NOT NULL default '',
PRIMARY KEY (`ID`)
) TYPE=MyISAM;
LOCK TABLES `sl_subversion` WRITE;
INSERT INTO `sl_subversion` VALUES (0,'keine');
UNLOCK TABLES;
GruÃ,
Jan.
Re: Primary Key und "0"
am 28.11.2006 18:05:51 von Siegfried Schmidt
Hallo Jan,
> ich habe in einer Tabelle eine Spalte mit ID's einer anderen
> Tabelle. Diese sind defaultmäÃig mit 0 belegt ist
Und wozu soll dann das auto_increment gut sein?
Siegfried
--
http://www.schmidt.ath.cx
Re: Primary Key und "0"
am 28.11.2006 18:07:14 von Thomas Rachel
Jan Schmidt wrote:
> Hallo NG,
>
> ich habe in einer Tabelle eine Spalte mit ID's einer anderen
> Tabelle.
Dann kommt mir auto_increment sehr abwegig vor. Wenn Du das entfernst,
sollte auch das NOT NULL zu entfernen sein.
> Gibts einen anderen Weg auÃer anstelle der 0 einen anderen Wert für
> 'keine' zu verwenden?
Ja, NULL.
Thomas
--
Jabber-ID: glglgl@amessage.info (keine Email-Adresse!)
Warum Jabber, was ist das und wie geht das?
http://de.wikibooks.org/wiki/Jabber-Kompendium:_Schnelleinst ieg
Re: Primary Key und "0"
am 28.11.2006 20:04:03 von Claus Reibenstein
Jan Schmidt schrieb:
> Der einfachste Weg "NOT NULL" zu entfernen funktioniert nicht.
NULL und 0 sind zwei vollkommen verschiedene Dinge.
> `ID` int(10) unsigned NOT NULL auto_increment,
Dein Problem heiÃt AUTO_INCREMENT. Das musst Du entfernen.
GruÃ. Claus
--
,~°O O
O ,´ / |/|\
/ |¯`. Das neue Hochzeits-Branchenbuch im Internet ,´ / | |\
/__| `~...............................................~´ /___|/ /
Re: Primary Key und "0"
am 28.11.2006 22:13:59 von Helmut Chang
Jan Schmidt schrieb:
> ich habe in einer Tabelle eine Spalte mit ID's einer anderen
> Tabelle.
Also ein Fremdschlüssel? Wieso dann auto_increment?
> Diese sind defaultmäßig mit 0 belegt ist (also kein Eintrag
> nötig).
Wo steht das?
> Nun kommt es manchmal vor, daß doch ein Wert eingetragen
> werden muß.
Welcher?
> Um die Abfrage nicht zu kompliziert zu machen, wollte ich
> die Null mit aufnehmen, das wird aber immer zu eins gemacht,
> d.h. folgendes liefert einen Eintrag mit der ID 1, was auch logisch
> ist.
Wieso ist das logisch?
> Der einfachste Weg "NOT NULL" zu entfernen funktioniert nicht.
Natürlich nicht.
1. auto_increment, wie andere schon erwähnten
2. Primärschlüssel
> Gibts einen anderen Weg außer anstelle der 0 einen anderen Wert für
> 'keine' zu verwenden?
Was soll es eigentlich werden?
> CREATE TABLE `sl_subversion` (
> `ID` int(10) unsigned NOT NULL auto_increment,
> `Beschreibung` varchar(100) NOT NULL default '',
> PRIMARY KEY (`ID`)
> ) TYPE=MyISAM;
Ist jetzt sl_subversion.ID ein Fremdschlüssel? Dann kannst du hier keine
Werte eintragen, die es in der anderen Tabelle nicht gibt. Bzw. NULL ist
kein gültiger Wert. Kann hier eine ID der anderen Tabelle mehrmals
eingetragen werden, geht der Primärschlüssel so auch nicht. Dann
brauchst du entweder ein eigenes Primärschlüsselfeld oder ein zweites,
das kombiniert einen eindeutigen Wert bildet.
Also irgendwas an deinem Design oder deiner Erklärung passt nicht.
gruss, heli
Re: Primary Key und "0"
am 29.11.2006 09:20:02 von Jan Schmidt
Claus Reibenstein <4spammersonly@web.de> writes:
> Jan Schmidt schrieb:
>
>> `ID` int(10) unsigned NOT NULL auto_increment,
>
> Dein Problem heiÃt AUTO_INCREMENT. Das musst Du entfernen.
Danke an alle!
ja, es ist ein Fremdschlüssel
AUTO_INCREMENT habe ich verwendet, damit man beim eintragen nicht erst
die nächst passende ID bestimmen muÃ.
Ich werde jetzt als defaultwert '1' anstelle von '0' eintragen und
AUTO_INCREMENT lassen.
GruÃ,
Jan.
Re: Primary Key und "0"
am 29.11.2006 11:12:24 von GreenRover
Jan Schmidt schrieb:
Also wie schon mehrfach gesagt, dein prob heist auto_increment, aber
mann kann ja immer noch leicht "bescheissen"
INSERT INTO `sl_subversion` VALUES (1,'keine');
UPDATE `sl_subversion` SET `ID`=0 WHERE `ID`=1;
Ist zwar selten unschön und macht bei dumps riesen Probleme, aber ich
kenne das Problem und diese ist nun mal einfach die beste Lösung wie ich
auch finde.
Re: Primary Key und "0"
am 29.11.2006 13:14:54 von Thomas Rachel
Jan Schmidt wrote:
> ja, es ist ein Fremdschlüssel
>
> AUTO_INCREMENT habe ich verwendet, damit man beim eintragen nicht erst
> die nächst passende ID bestimmen muÃ.
Das brauchst Du doch bei einem Fremdschlüssel gar nicht. AUTO_INCREMENT
brauchst Du in diesem Fall bei der Fremdtabelle...
Irgendwie kommt mir Dein Vorhaben sehr verquer vor.
Thomas
--
"Multiple exclamation marks," he went on, shaking his head,
"are a sure sign of a diseased mind." (Terry Pratchett, "Eric")