Jump to content
php.lv forumi

mysql unique, primary un index


andrisp

Recommended Posts

man ir tabula, kuraa galvenais ID ir unique (ar auto_increment), ir veel divas kolumnas (skaitlju), kuras vajadzeetu, lai liidziigi kaa ID vienmeer automaatiski aizpildaas ar unikaalaam veertiibaam, bet ljautu arii speciaali noraadiit piemeeram jau shajaa kolumnaa eksisteejoshu skaitli.. aa un lai nekad netiktu izmantoti skaitlji, kas kaadreiz ir bijushi kolumnaa, bet ir izdzeesti (ar visu rindu)...

 

varat paliidzeet un izskaidrot, kuru no unique, primaru vai index izmantot..

Link to comment
Share on other sites

UNIQUE indekss nozīmē, ka tajā kolonnā nedrīkst atkārtoties vērtības.

PRIMARY ir tas pats vien UNIQUE vienīgi ar papildus nozīmi, ka šī ir primārā atslēga - uz to var referencēties no citām tabulām.

INDEX ir parasts indekss (abi iepriekšējie arī ir indeksi), kurš atļauj vērtībām atkārtoties.

Tev visdrīzāk jāskatās uz keywordu AUTO_INCREMENT (ja iet runa par MySQL).

Link to comment
Share on other sites

spriezhot peec http://dev.mysql.com/doc/mysql/en/example-...-increment.html

 

Note that in this case (when the AUTO_INCREMENT column is part of a multiple-column index), AUTO_INCREMENT values are reused if you delete the row with the biggest AUTO_INCREMENT value in any group. This happens even for MyISAM tables, for which AUTO_INCREMENT values normally are not reused.

 

tas ko veelos, nevar buut panaakts.. paareejiem indexiem auto_increment lielaakaas veertiibas var tik izmantotas otreizeeji, ja tiek izdzeestas, bet tas galiigi neder.

 

varbuut kaadas idejas ?

Link to comment
Share on other sites

Nu tad glabā pēdējo iebāzto vērtību kautkur citur, un katreiz kad ieinserto ierakstu, tad palielini to par vienu. A kam tev kautko tādu vajag, ja neder to skaitļu atkalizmantošana jau izdzēstajiem?

Link to comment
Share on other sites

citaa tabulaa ierakstiem ir sasaiste ar shiim veertiibaam.. gadijumaa ja tiktu izdzeesta kaada no shiim veertiibaam (un tai buutu piesaistiiti ieraksti no otras tabulas), un atkal izveidota jauna rinda, kurai veertiiba buutu taada pati, kaa izdzeestaa, tad otras tabulas ierakstiem buutu nepareizas sasaistes (bet vajadzeetu taa lai tiem paliktu sasaiste ar neeksisteejoshu veertiibu, liidz ar to buutu viegli sekot liidzi shaadaam lietaam)..

 

nu aptuveni taa, sorry, ka neko nevar saprast..

 

ps. izmantoshu tavu ideju par atseviskju veertiibu glabaashanu...

Link to comment
Share on other sites

A kāpēc jāreferencējas uz tabulas ierakstu pēc kolonas, kas nav primārā atslēga? Tieši tam taču tā (primarā atslēga) arī ir domāta. Uz kādu tabulu no citas jāreferencējas pēc primārās atslēgas! Tā un tikai tā, un nekādi citādi. Vēlāk tikai pašam problēmas būs, ja vajadzēs ko sarežģītāku pielikt.

 

Un pie tam, ja jau tajā tabula tiek izdzēsts tas ieraksts ar to tavu numuru, tad jau jāizdzēša arī dati no tās otras tabulas, citādi jau jēgas vairs nav referencēties! Tāpēc viss ir kārtībā, ka drīkst izveidot citu ierakstu ar numuru, kas bijis izdzēsts.

Link to comment
Share on other sites

tabula #2, piemeeram, ir

 

|nosaukums|tips| apakstips |
--------------------
|   kurpe      | 2  |  2 |
|   galds      |  1 |  1  |
|   galds      |  1 |   0 |
etc

 

tabula #1

|tips_nosaukums| nr | nr2 |
-------------------------------
|   meebele       | 1  |   0  |
|   aviizhugalds  | 1  |   1  |
|   apgjeerbs     | 2  |   0  |
|   kaajaam       | 2  |   2  |
etc

 

taada man taa saistiiba starp tabulaam rupji izsakoties..

 

tipa vajag taa lai izdzeeshot 'kaajaam' apakshtipu un pievienojot jaunu apakshtipu apgjeerbam atkal neizveidotos nr=2 un nr2=2..bet gan nr=2 un nr2=3..

Link to comment
Share on other sites

bubu: ja ir labs backups, tad var referncēties pēc PK, mani dzīve iemācījusi tomēr uzticēties papildus kolonnai, jo pie table repair PK var pārindeksēt auto_incrementu. Vienk. papildfunkcija, kas pēc index uzliek pēdējam uID=PK vai random()

Link to comment
Share on other sites

table repair PK var pārindeksēt auto_incrementu.

19250[/snapback]

Atkarīgs no DB. Manurpāt, ja db uztur foreign key'us, tādām lietām nevajadzētu notikt. Bet nu nez.. neesmu daudz krāmējies ar lielām relāciju db.

 

andrisp: tur laikam ir jāizmanto primārā atslēga no divām kolonnām (nr, nr2)

Link to comment
Share on other sites

×
×
  • Create New...