Yritän tehdä taulun yhdestä kentästä automaattisesti päivittyvän laskurin, määrittelemällä sen auto_increment:ksi, mutta saan ilmoituksen: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key. Ilmoitus viitannee tuolla auto column:lla automaattisesti päivittyvään kenttään, jonka tyyppi on timestamp (on uppdate current_timestamp). Voiko INSERT -lauseessa syöttää kenttään lausekkeen, joka paivittää kentän arvon?
jos haluat taulun auto_incrementiksi, niin sen tyypin täytyy olla jokin intin variaatio. esim tinyint.
Vika voi olla siinä, että kenttä ei ole taulun avain ("it must be defined as a key"). Ratkaisu on määritellä kenttä ensin taulun avaimeksi.
Voit käyttää seuraavaa SQL-komentoa:
ALTER TABLE taulu ADD PRIMARY KEY (kentta)
Kentän voi määritellä avaimeksi myös suoraan phpMyAdminissa (kuvake, jossa on avaimen kuva).
vehkis91 kirjoitti:
jos haluat taulun auto_incrementiksi, niin sen tyypin täytyy olla jokin intin variaatio. esim tinyint.
Se on BIGINT.
Ekassa viestissäsi kentän tyypi oli kylläkin timestamp, jolle ei voi kohdistaa tuota asetusta. Sen sijaan timestamoille voi antaa asetuksen ON UPDATE CURRENT TIMESTAMP lipun tjsp katso manuskasta oikea asetus.
Selitin asian huonosti.
Kirjoitin "Ilmoitus viitannee tuolla auto column:lla automaattisesti päivittyvään kenttään, jonka tyyppi on timestamp (on uppdate current_timestamp)
mutta piti kirjoittaa
Ilmoitus viitannee tuolla auto column:lla taulussa jo olevaan toiseen kenttään, automaattisesti päivittyvään, jonka tyyppi on timestamp (on uppdate current_timestamp).
Sorry sekaannus
Selkeintä olisi, jos laittaisit tänne näkyviin taulun luontikomennon ja siitä tulevan virheilmoituksen sellaisenaan.
Luo auto increment-kentät näin:
CREATE TABLE x(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ...);
lainaus:
Yritän tehdä taulun yhdestä kentästä... määrittelemällä sen auto_increment:ksi,
Ilmoitus viitannee .... taulussa jo olevaan toiseen kenttään....
Voiko INSERT -lauseessa syöttää kenttään lausekkeen, joka paivittää kentän arvon?
Ymmärrärsin, että et ole lisäässä tauluun uutta kenttää, vaan muuttamassa olemassa olevan kentän tyyppiä. Auttaisiko tämän tapainen:
ALTER TABLE Taulu MODIFY Kentta KENTAN_TYYPPI
Tässä vielä suora lainaus tuolta: http://bugs.mysql.com/bug.php?id=10459
alter table t1 modify f1 int(4) auto_increment
Aihe on jo aika vanha, joten et voi enää vastata siihen.