Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  mysql ja autoincrement - kuid ROW ei lisandu, aga number uuendakse märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
b_alex
HV kasutaja
b_alex

liitunud: 22.02.2008




sõnum 18.09.2008 00:27:32 mysql ja autoincrement - kuid ROW ei lisandu, aga number uuendakse vasta tsitaadiga

mysql ja autoincrement - kuid ROW ei lisandu, aga number uuendakse

just päev-teine nägin endal või kusagil, kuid ei leia ja ei tule meelde kus icon_sad.gif

näiteks statistika jäoks:
on tabel STAT, kus lahter S_ID ja S_URL
võiks teha S_ID autoincriment, aga siis iga uue külastamisega - lisatakse uus ROW, ja tabel kohe kasvab 150GB-ks icon_smile.gif
kusagil nägin, et oli mingi lihtne INSERT või UPDATE SQL ; või S_ID natuke teisiti "formuleerida" seda AUTOINCR, ja siis lisa ROW ei tehta, aga number ikka uuendatakse +1 iga kord.
ja kõige parem oleks, kui abistate kuidas nii teha, see ka võimalik peaks:
eelmises näidises oleks vaid üks ROW tabelis, ja kõik, või isegi null, aga autoincr value oleks "reaalne"
aga kui näiteks kodulehel on 10 unikaalseid urli, siis sooviks, et tabelis oleks 10 row, kus S_URL on need urlid, ja S_ID just see arv, mis seda urli klikitakse.
ehk midagi UPDATE STAT set S_ID=AUTOINCR where S_URL='http://pettu.com/kontakt.php'
siis oleks vaabse suurepärane icon_smile.gif kaotasin seda "dokumentatsiooni", kus just see kirjas oli, või unustasin kus nägin seda juttu icon_sad.gif
Kommentaarid: 22 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 20
tagasi üles
vaata kasutaja infot saada privaatsõnum
troglodyte
Kreisi kasutaja
troglodyte

liitunud: 09.08.2002




sõnum 18.09.2008 00:55:30 vasta tsitaadiga

Jube keeruliseks oled asja ajanud..
Asenda see S_ID=AUTOINCR -> S_ID=S_ID+1 ja peaks korras olema (kui õigesti aru sain).

Lisaks: Minu arvates on "S_ID" veidi ebasobiv nimi sellele väljale. Pigem sobiks selle nimeks "clicks" või "hits" või midagi sellist.
See on siiski loendur, mitte identifikaator.

_________________
ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
b_alex
HV kasutaja
b_alex

liitunud: 22.02.2008




sõnum 18.09.2008 01:13:47 vasta tsitaadiga

S_ID lihtslt nimi icon_smile.gif pole veel tabel loodud, näide icon_smile.gif ülesanne isegi abs muu ja keerulisem, kuid nii viisi on lihtsam seletada icon_smile.gif

aga ei saanud su abist aru, mis ja kus asendada?
või, kui õige sain aru, et peab veel ennem update või inserti - tehe veel 1 SELECT, et uurida, mis viimane ID või num on? ehk
select sql bla bla *
ja siis
update või insert sql bla bla *
?
Kommentaarid: 22 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 20
tagasi üles
vaata kasutaja infot saada privaatsõnum
Celion
HV kasutaja
Celion

liitunud: 31.10.2002




sõnum 18.09.2008 01:24:17 vasta tsitaadiga

troglodyte mõtles seda, et see S_ID peaks olema täiesti tavaline number - ei mingit autoincrementi jms. Iga kord, kui lehel on uus külastus, liidad sinna ühe juurde: UPDATE STAT SET S_ID=S_ID+1 WHERE S_URL='foo'
_________________
Ostan Roger Zelazny "Amberi kroonikad" (soovitatavalt eesti keeles).
Kommentaarid: 46 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 45
tagasi üles
vaata kasutaja infot saada privaatsõnum
b_alex
HV kasutaja
b_alex

liitunud: 22.02.2008




sõnum 18.09.2008 01:37:15 vasta tsitaadiga

aaa, nüüd sain aru icon_smile.gif loll icon_smile.gif öö peas
p.s. aga olukord, kui seda URL lehe pole veel külastanud, siis pole midagi update teha icon_sad.gif
kui teha ennem sql - et veenduda kas ON juba url baasis, ja kui pole siis INSERT,
aga see ka kaua - kuna 2x korda SQL teha...
tänud ikka, ka see aitab, aga äkki keegi ja ka teie - ei tea INSERTIGA kuidas teha? * mõtlemas ise ka...
Kommentaarid: 22 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 20
tagasi üles
vaata kasutaja infot saada privaatsõnum
iceincube
HV veteran
iceincube

liitunud: 18.11.2005




sõnum 18.09.2008 01:41:51 vasta tsitaadiga

ON DUPLICATE KEY peaks olema märksõnaks,

INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;

Äkki mõltesid seda ja on abi
Kommentaarid: 39 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 37
tagasi üles
vaata kasutaja infot saada privaatsõnum
b_alex
HV kasutaja
b_alex

liitunud: 22.02.2008




sõnum 18.09.2008 02:42:50 vasta tsitaadiga

-- MYSQL Server version: 3.23.58
CREATE TABLE `tab2` (
`a` int(11) NOT NULL default '0',
`b` varchar(255) NOT NULL default '',
`c` int(11) NOT NULL default '0',
PRIMARY KEY (`b`)
) TYPE=MyISAM;

INSERT INTO tab2 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;

proovige, kas nimetatud teil töötaks? ja mis ver mysql=? äkki selles viga
mis puudus? icon_rolleyes.gif mysql ver? icon_rolleyes.gif või mis tüüpi field peaksid olema?
Kommentaarid: 22 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 20
tagasi üles
vaata kasutaja infot saada privaatsõnum
iceincube
HV veteran
iceincube

liitunud: 18.11.2005




sõnum 18.09.2008 08:30:34 vasta tsitaadiga

Tegin täpselt selle tabeli mis sul tehtud, siis panin kolm korda seda insert queryt.. ja kõik toimis.
C värtus kasvas iga inserdiga.

version 5.0.67-log


peaks toimima alates
tsitaat:
(added in MySQL 4.1.0)

http://dev.mysql.com/doc/refman/4.1/en/insert-on-duplicate.html
Kommentaarid: 39 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 37
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  mysql ja autoincrement - kuid ROW ei lisandu, aga number uuendakse
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.