Valami bajom van az auto_incrementtel
Sziasztok!
Tartok tőle, hogy valami nagyon egyszerű dolgot nem veszek észre. Nem rég keztem el sql-ezni, és már bajba is kerültem. Készítettem egy táblát a következő paranccsal phpMyAdminban:
CREATE TABLE `valami` (
`azon` INT( 9 ) NOT NULL AUTO_INCREMENT ,
`kat_nev` VARCHAR( 15 ) NOT NULL ,
`kat_leiras` TEXT NOT NULL ,
PRIMARY KEY ( `azon` )
) TYPE = innodb;
most pedig szeretnék egy új sort beszúrni a következő módon:
INSERT INTO `valami` (`kat_nev` , `kat_leiras` )
VALUES ('szoveg', 'szoveg') ;
De nem akar sikerülni, csak úgy ha az 'azon' mezőnek is adok egy értéket, holott én azt várnám, hogy automatikusan növekedjen. Vagy rosszul gondolom?
mit nem veszek észre?
A segítséget előre is köszönöm!
Cs.
■ Tartok tőle, hogy valami nagyon egyszerű dolgot nem veszek észre. Nem rég keztem el sql-ezni, és már bajba is kerültem. Készítettem egy táblát a következő paranccsal phpMyAdminban:
CREATE TABLE `valami` (
`azon` INT( 9 ) NOT NULL AUTO_INCREMENT ,
`kat_nev` VARCHAR( 15 ) NOT NULL ,
`kat_leiras` TEXT NOT NULL ,
PRIMARY KEY ( `azon` )
) TYPE = innodb;
most pedig szeretnék egy új sort beszúrni a következő módon:
INSERT INTO `valami` (`kat_nev` , `kat_leiras` )
VALUES ('szoveg', 'szoveg') ;
De nem akar sikerülni, csak úgy ha az 'azon' mezőnek is adok egy értéket, holott én azt várnám, hogy automatikusan növekedjen. Vagy rosszul gondolom?
mit nem veszek észre?
A segítséget előre is köszönöm!
Cs.
doksi, példa
amúgy te ezt módot használhatod (pár sorral lejjebbi példa)
köszönöm
Olvastam a doksit, próbáltam e szerint eljárni, csakhogy a mezőket idézőjelbe tettem. hiba volt!
most már müxik!
Nem is biztos hogy hiba
Én így szoktam
null helyett tényleg semmi
egyébként más módon is ki lehet hagyni oszlopokat:
ne már
Üdv,
Felhő
hehe
tényleg? én nem is erre gondoltam, hanem arra az esetre, amikor egy mező nem NOT NULL, akkor a beírt null nem nem megadásnak vagy kihagyásnak (ezt most nem tudom jobban megfogalmazni) lesz értelmezve hanem NULL értéknek (ami ugyebár nem egy n-u-l-l karaktersorozat).
konkrétan arra az esetre próbáltam utalni, hogy van egy int mező, aminek alap értéke 0 de nincs megadva a NOT NULL tulajdonság, és amikor majd hasonló insertet ír valaki, akkor nem 0 fog megjelenni a rekordban, hanem NULL, amivel nem fog jól műkdni a select ... where akarmi != 0 kérés. legalábbis én már vártam a kvetkező ilyen témát, de lehet csak túl sok hülye kérdést olvasok mostanában itt.
szóval ezért írtam, hogy szvsz a null azért nem szerencsés, mert adott esetben értékként veheti fel egy mező.
egyébként én ezért is szeretem jobban az insert ... set ... formát (vagy akkor már legalább sorolja fel a mezőket is), mert ott nincsenek ilyen problémák. de azért szólj, ha valamit nem jól tudok.
nem értem
Üdv,
Felhő
áhhh
ezt egyáltalán nem értem mire írod, ráadásul már másodszor.
újra leírom: én ezekkel tisztában vagyok, póbáltam egy kezdő fejével gondolkozni, és ezért írtam le, hogy az insert parancsban lévő null-t én azért tartom veszélyesnek, mert akár értékként is megjelenhet, ha nincs megadva a not null (és itt nem arra gondolok, hogy lesz egy "null" stringem, bár fogalmam sincs ezt honnan veszed, maga a NULL érték csak nem rossz kifejezés a NULL-ra). ehhez akkor még leírom azt is, hogy én nem használok null-t, azaz mindig megadom a not null-t a tábla definíciókban.
tehát van egy kezdő (egy kezdő!) programozónk, aki csinál egy hasonló táblát:
nézzük sorban milyen módszereket ajánlottunk neki:
és akkor újra: próbáltam egy kezdő fejével gondolkozni, milyen hibák jöhetnek elő a tábla deklarálástól az első lekérdezésekig, és itt éreztem némi hibalehetőséget (mint ahogy a mysql-es srácok is) a NULL értékkel (avagy NULL-lal és még mindig nem "null" stringgel) kapcsolatban, kizárólag ezért írtam amit írtam.
irtam, hogy nem értem :)
Üdv,
Felhő
egyetértünk
egyetértünk, ez a lényeg, Max Logan viszont nem null-t akart beszúrni. én csak erre akartam reflektálni, nem akartam, hogy ha később olvassák, félreérthető legyen, különben is ezt Tőled tanultam. ;P
tegnap este nagyon fáradt voltam, lehet ezért nem sikerült jól írnom, de legközelebb majd megpróbálok szabatosabban fogalmazni.
phpMyAdmin
NULL === nem megadás
NULL === nem megadás, kihagyás. Nem tudsz olyan esetet mutatni, hogy egy mezőnek nincs "szabályos" értéke és NOT NULL. Most lehet játszani a szavakkal, úgy is mondhatjuk, hogy a NULL nem más, mint notáció az értéknélküliségre. Méghozzá ajánlott notáció, legalábbis az elhagyással szemben (, ...).
biztos a not null?
kíváncsi vagyok hány kezdőnél magától értetődő a not null használata.
később nehezebb visszakeresni