Jump to content
php.lv forumi

izdzēšas no db


KarlisBa

Recommended Posts

Sveiki!

 

Ir datubāze kurai ir 3. tabulas un vienā no tām tabulām ir tikai skaitļu ieraksti. Piemēram, "13" un tas skaitlis ir domāts kā minūtes ir arī "12049943" minūtes. Doma tāda kā panākt, lai no tā brīža, kad datubāzē ir ievietots tajā tabulā šis skaitlis, tas ieraksts automātiski izdzēstos kopā ar pārējiem ierakstiem, kas ir saistīti ar šo ierakstu?

Link to comment
Share on other sites

bubu --> vispar daljai jautajuam atbilde tiesam ir trigeri ;) , bet tik tiesam ja neizmanto cronu (vai ko liidzigu), kas tad tos trigerus izsauks..

--

shalonik --> pacenties noformulet savu jautajumu skaidraak ...

Cik sapratu tad faktiski ir 2 jautajumi ..

Kaa idzeest ierakstu peec noteikta laika --> skaties Kristabs atbildi

UN

kaa idzeest parejos automatiski --> skaties Ghenis atbildi ..

--

+ LUUDZU tomer nakemreiz pastasti KADAI OP SISTEMAI UN KADA DB (velams arii versija) .. savaadak atbilde buus kada nu vinja ir ...

Edited by Grey_Wolf
Link to comment
Share on other sites

"on delete cascade" - paprasi šo gūglei, jo nezinot situāciju un dbvs liekas, ka prasti tavu saistīto ierakstu problēmu var risināt kaut kā tā.

 

ierakstu dzēšana:

1) cron izsaukts skripts ar DELETE (vai MS SQL jobs ar DELETE TSQL, tak nezinām lietotās tehnoloģijas)

2) visas datu manipulācijas saistībā ar šo tabulu sākam ar DELETE

 

1ais variants ir skaisti un pareizi, 2ais ātri.

Link to comment
Share on other sites

Labi vēlviens piemēras ar zīmējumu.

 

datubāze:

id | iraksts1 | ieraksts2 | ieraksts3

 

Pieņemsi, ka ierakstā3 tiks likts iekšā skaitlis, kas tiek piedēvēts minūtēm. Ierakstā viens ir kaut kāds vārds vai skaitlis tā pat kā ierakstā2. Vajadzīgs ir skripts, kas ieraksta3 informāciju uztver kā minūtes laika vienību un no tā ielikšanas brīža pa sekundei skaitītu nost. Doma tāda, ja ierakstā3 ir ielikts skaitlis 3, tad pēc 3. minūtēm no tā brīža, kad tika ielikts skaitlis visi pārējie ieraksti, kas ir pie tā id tiktu izdzēsti gan ieraksts1, gan ieraksts2, portams, arī ieraksts3.

 

Tādi ieraksti ir vairāki, piemēram.

 

id1 | iraksts1 | ieraksts2 | ieraksts3
id2 | iraksts1 | ieraksts2 | ieraksts3
id3 | iraksts1 | ieraksts2 | ieraksts3
id4 | iraksts1 | ieraksts2 | ieraksts3
id5 | iraksts1 | ieraksts2 | ieraksts3
id6 | iraksts1 | ieraksts2 | ieraksts3

 

Tagad piemēram pie id1 ierakstam3 ir ierakstīts 5 id4 ir piemēram 10 .u.t.t un katrs notiem tiek atsevišķi skaitīts uz atpakaļu līdz 0 sekundei no, piemēram, 10. minūtēm skaita pa sekundei vai minūtei uz atpakaļu un sasniedzot 0. sekundi, tas izdzēšas no datubāzes. Tagad doma ir skaidrāka?

 

P.S Linux sistēma mysql versija 5.0.45.

Edited by shalonik
Link to comment
Share on other sites

DB neko neskaita un neko nerekjinaas , ta tomer ir baredzeta Datu glabasanai Nevis apstradei ..

 

1. glabaa nevis Minutes bet gan Sekundes

2. kaa jau tika minets tad teiksim 3 ieraksts buus Sibriza laiks(unix time formataa) + 180 ...

 

3. pie parbaudes : Parbaudzi vai 3 ieraksts nav mazaks par sibriza laiku (unix time formataa) ja ir tad nodeletee visu rindu (ierakstus )

tas arii viss...

---

PHP pusee unix time laiku dabuun ar f-ju time()

taadad izveides laikaa buus

 $patreiz_laiks=time();
$vajadzigais_laiks= $patreiz_laiks+180; // 3 minutes 
// Sho arii rakstam DB

Un attieciigi parbaudi

DELETE FROM tabulis WHERE lauks3<UNIX_TIMESTAMP()

edit: aizmirsu piebilst : lauka tipam izmanto INT un nevis kaadu citu ...

 

+ sho parbaudei pieliec pasaa skripta(u) sakumaa .. taatad jebkursh lietotaajs kas ieies lapaa (izmantos sho skriptu) automatiski parbaudiis vai nav ja iztecejis dotais laiks (arii citiem useriem ...) ....

Cron laist ar 1 intervalu buutu pastuulbi , jo DB tiks dzenaata arii taja briidii pat tad kad nav neviena apmekletaja ...

Edited by Grey_Wolf
Link to comment
Share on other sites

Vēl viena iespēja ir attēlojot (jo es tā naivi pieņemu, ka dzēst gribas tāpēc, lai pēc tam tos datus nevarētu attēlot) un visur citur, kur notiek šo datu apstrāde, uzliek vienkāršu where klauzu, kas paskatās uz ielikšanas laiku, sekundēm cik ilgi jāglabā un pašreizējo laiku un izmantojot astronomisku mega funkciju no šiem datiem izrēķina, vai ierakstu rādīt vai nē.

Savukārt, lai tādi dati nesakrātos lielām grēdām, tad uzstutē to pašu cron procesu, kas periodiski (reizi stundā, pusstundā, dienā, atkarībā no datu daudzuma un intervāliem) palaiž skriptu, kas izdzēš neglābjami novecojušos datus. Skriptā, protams, tad attiecīgi var dzēst vispirms no bērnu tabulām, un tad visbeidzot vecāka tabulas.

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

Vispār situācija ir tāda, ka vajag, lai viņš arī dzēš ja neviens neapmeklē mājas lapu... Pati datubāze ar datiem nav domāta priekš web lapas, bet no web lapas to tikai konkrotlē. Pati db ir piesaistīta citai lietai no kā arī tur tiek ievadīti dati db. Bet vai to pašu php skriptu nevar uztaisīt tā, lai viņš pats ik pēc piemēram 1-5. minūtēm pārbauda vai kādam failam nav iztecējis laiks un dzēš to? Jo to datu ievade notiek be maz vai ik pa 5. minūtēm un dažreiz minūtes ir 1-10 un dažreiz 10000 tākā labākajā gadījumā, ka viņš visu laiku pārbauda nu vismaz ik pēc 5. min... Bet tāpat paldies mēģināšu to tavu grey_wolf uztaisīt.

Link to comment
Share on other sites

ka viņš visu laiku pārbauda nu vismaz ik pēc 5. min...

Nee nevar Jo kaa jau mineju tad DB nav domata sadiem merkjiem ..

Nu tad uzliec Cron lai parbauda ik peec paris minuteem --> faktiski saads pieprasijums jau nav tik noslogojosh , lai to nedariitu ...

Link to comment
Share on other sites

Tā līdz šim visu sapratu, bet tik tiko sapratu, ka neizprotu vienu lietu. Ja jau skripts salīdzina vai paškreizējais laiks ir lielāks par datubāzē ievadīto kā, tad būs ja ievadīs piemēram 1200000 minūtes? Tad viņš pats arī tās dienas noskaitīs?

Link to comment
Share on other sites

×
×
  • Create New...