Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  SQL kitsendus märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
mine lehele eelmine  1, 2
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:  
multizync
HV kasutaja
multizync

liitunud: 23.05.2005




sõnum 10.04.2012 10:36:23 vasta tsitaadiga

Mul nagu niimoodi töötaks, kui tabelis Tuba, on sisestatud kirjed kõigile 4'le hinnaklass_id'le. Et nagu tabelis Tuba on esindatud kõik Hinnaklass tabeli välisvõtmed. Aga näiteks kui hinnaklass_id = 3 'ga ei ole tabelis Tuba ühtegi kirjet, siis funktsioon peksab segast.
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 18
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 10.04.2012 11:01:56 vasta tsitaadiga

Seda sulle öelda üritasingi, et seal on loogikaviga. Kui teed triggeris päringu tabelisse Tuba, siis ei saa sa sealt kätte seda rida, mida lisada üritatakse kuna triggeri käivitumise hetkel ei ole see rida veel lisatud. Ehk hetkel teed seda, et kontrollid ka tabelis Tuba on vähemalt üks reeglitele vastav kirje. Kas ka lisatav kirje korrektne on, seda su kood ei kontrolli, lisatava kirje andmed saadki kätte tabelist NEW.
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
2korda2
HV kasutaja

liitunud: 19.07.2003




sõnum 10.04.2012 12:13:10 vasta tsitaadiga

struktuur:
KORRUS
HINNAKLASS
HINNAKLASS_KORRUS (seosetabel veergudega ID, KORRUS_ID, HINNAKLASS_ID)
TUBA (veeruga HINNAKLASS_KORRUS_ID)

Selliste protseduuride/triggeritega ei ole mõistlik jännata.
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum
multizync
HV kasutaja
multizync

liitunud: 23.05.2005




sõnum 10.04.2012 14:20:19 vasta tsitaadiga

Sain korda selle triggeri funktsiooni asja. Tänud napoleon,

Tekkis nüüd järgmine küsimus, et kas kui mul on ühel primaar võtme veerule isik_id lisatud arvujada generaator, siis, kui lisada andmeid, ja andmetes on viga sees olnud, siis ta annab veateate (CHECK kitsendused, mis olen ennem lisanud) ja ridu ei lisata vastavasse tabelisse. Aga see arvujada generaatori genereeritud arv, mis peaks olema järgmise rea isik_id tabelis on millegipärast niipalju kordi suurem kui mitu korda olen eelmist rida valesti sisestanud.

Näiteks, mul on isik_id tabelis järgmised väärtused: 1, 2, 3, 4 Ja kui ma nüüd üritan ühe insert lause sisestada, ja lauses on viga sees, parandan vea ära, ja siis on järgmine isik_id 6. Tabelis on siis: 1, 2, 3, 4, 6.
nr 5 jääb vahelt ära, kas nii ei saa kuidagi teha, et ta ei jätaks vahele neid arvusi.

Tänud ette..
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 18
tagasi üles
vaata kasutaja infot saada privaatsõnum
serk
HV kasutaja

liitunud: 24.05.2003




sõnum 10.04.2012 14:38:09 vasta tsitaadiga

Tee endale selgeks mis asi on sequence ja kuidas neid kasutatakse.

Miks ei tohi arv vahele jääda?

Triggerist: ehe näide, miks neid mitte kasutada, teadmata kuidas trigger üldse töötab icon_smile.gif Lisaks, raisid seal exceptioni, mis siis teed, kui vaja veateade kuvada teises keeles? Oletan, et hetkel kuvad seda teadet otse applikatsioonis. Kuidas sa sellise raisimise peale applikatsioonis normaalse vigadehalduse ehitad? Hakkadki exception blokis substringima? Sellisel kujul exceptioni raisimine, well, kui seda mõnele õppejõule näitad, siis saad kena peapesu.

Võta google lahti ja loe alustuseks läbi andmebaasi tootja manualid EXCEPTION'ite ja SEQUENCE'ide kohta.
Kommentaarid: 8 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum
multizync
HV kasutaja
multizync

liitunud: 23.05.2005




sõnum 10.04.2012 14:58:53 vasta tsitaadiga

SELGE

Üks küsimus oleks veel, seoses postgresql andmebaasi pildi lisamisega. Lugesin postgresql dokumentatsiooni suurte objektide lisamise kohta http://www.postgresql.org/docs/8.1/static/lo-interfaces.html#AEN27107 , aga päris täpselt aru ei saa, mingi näide võiks ees olla..
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 18
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 10.04.2012 15:03:16 vasta tsitaadiga

serk kirjutas:


Lisaks, raisid seal exceptioni, mis siis teed, kui vaja veateade kuvada teises keeles? Oletan, et hetkel kuvad seda teadet otse applikatsioonis. Kuidas sa sellise raisimise peale applikatsioonis normaalse vigadehalduse ehitad? Hakkadki exception blokis substringima? Sellisel kujul exceptioni raisimine, well, kui seda mõnele õppejõule näitad, siis saad kena peapesu.


Asjal võib siiski jumet olla, kui kontroll on ka äriloogika kihis olemas ehk ideaalis ei tohiks see exception kunagi tulla, aga kui keegi äriloogikast mööda hiilib(näiteks otse baasi näppides või äriloogikat häkkides), siis saab lõpuks ikka vastu näppe:)
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
serk
HV kasutaja

liitunud: 24.05.2003




sõnum 10.04.2012 15:27:56 vasta tsitaadiga

multizync kirjutas:
SELGE

Üks küsimus oleks veel, seoses postgresql andmebaasi pildi lisamisega. Lugesin postgresql dokumentatsiooni suurte objektide lisamise kohta http://www.postgresql.org/docs/8.1/static/lo-interfaces.html#AEN27107 , aga päris täpselt aru ei saa, mingi näide võiks ees olla..


Java näide:
http://forums.devshed.com/postgresql-help-21/how-to-save-bitmap-image-into-postgresql-100626.html
PHP näide:
http://archives.postgresql.org/pgsql-php/2005-12/msg00024.php

Googelda, magic stuff on see google icon_smile.gif

---------------------------
Napoleon, esimest korda saab baasis vastu näppe ja siis disabled triggeri oma updatei jaoks. Olen seda näinud icon_smile.gif Kui andmebaasis objektide grandid pole 100% paigas, leiab mõni turakas ikka viisi kuidas mingi jama kokku keerata. Ma ei näe, et trigger reaalselt aitaks kuidagi ja pigem tekitab lisa koormust ja keerukust. Üldjuhul DBAd siiski lampi ise asju ei muuda.
Kommentaarid: 8 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum
2korda2
HV kasutaja

liitunud: 19.07.2003




sõnum 10.04.2012 16:57:40 vasta tsitaadiga

napoleon kirjutas:
serk kirjutas:


Lisaks, raisid seal exceptioni, mis siis teed, kui vaja veateade kuvada teises keeles? Oletan, et hetkel kuvad seda teadet otse applikatsioonis. Kuidas sa sellise raisimise peale applikatsioonis normaalse vigadehalduse ehitad? Hakkadki exception blokis substringima? Sellisel kujul exceptioni raisimine, well, kui seda mõnele õppejõule näitad, siis saad kena peapesu.


Asjal võib siiski jumet olla, kui kontroll on ka äriloogika kihis olemas ehk ideaalis ei tohiks see exception kunagi tulla, aga kui keegi äriloogikast mööda hiilib(näiteks otse baasi näppides või äriloogikat häkkides), siis saab lõpuks ikka vastu näppe:)

Kaka, sest vähegi suurema projekti korral ei suuda never-ever keegi tagada, et mõlemas kihis olevad kontrollid 100% alati täpselt analoogselt töötaksid. Tarbetu overhead, mida saab vältida lihtsa töökorraldusliku võttega: LIVE andmebaasi kallal ilma äriloogika kihi kontrollideta ei käida. Kui on vaja käia, siis alustuseks "9 korda mõõdetakse" [käivitatakse tehtav muudatus testkeskkonnas (keskkond ja data on võimalikult LIVE sarnane) ja kontrollitakse tulemust] ja alles seejärel "lõigatakse" (tehakse muudatus LIVE keskkonnas). Loomulikult ei tee üldse paha eelnevalt LIVE baasist backup teha. Viimane sõltub muudatuse iseloomust ja baasi struktuurist - kui baasis on rakendatud korralik ajalootabelite lahendus (vat see on koht, kus saab/tohib triggereid kasutada) ja tegemist on vaid data muutmisega, siis võib sealt taastamine olla lihtsam/mõistlikum.
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum
multizync
HV kasutaja
multizync

liitunud: 23.05.2005




sõnum 18.04.2012 01:17:13 vasta tsitaadiga

Üks küsimus tekkis, kui veerule on kehtestatud DEFAULT value, kas siis on mõtet määrata ka NOT NULL
Ise küll ei mõtle välja mingit olukorda, kus seda NOT NULL'i oleks siis vaja..

Kinnitab keegi äkki seda..icon_smile.gif
Või lükkab ümber..
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 18
tagasi üles
vaata kasutaja infot saada privaatsõnum
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 18.04.2012 07:03:10 vasta tsitaadiga

Ka DEFAULT määranguga väljale saad sa ju käsitsi anda NULL väärtuse. Kui see on sisuliselt vale, siis tuleb ka NOT NULL panna. DEFAULT väärtus rakendub minu meelest ainult siis, kui teed INSERT päringu, kus kõnealust välja üldse mainitud pole.
_________________
Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
multizync
HV kasutaja
multizync

liitunud: 23.05.2005




sõnum 18.04.2012 13:16:55 vasta tsitaadiga

Fukiku kirjutas:
Ka DEFAULT määranguga väljale saad sa ju käsitsi anda NULL väärtuse. Kui see on sisuliselt vale, siis tuleb ka NOT NULL panna. DEFAULT väärtus rakendub minu meelest ainult siis, kui teed INSERT päringu, kus kõnealust välja üldse mainitud pole.


Just, sul on õigus, eemaldasin ühelt veerult NOT NULL ära ja lisasin sinna veergu NULL väärtuse, ja jäigi tühjaks.
Nii, et ikka DEFAULT NOT NULL

Tänud..

E: Aga primaarvõtme veerule vast ei ole vaja NOT NULL kehtestada, sest primaarvõtme kitsendus automaatselt määrab ära, et tegemist on kohustusliku veeruga..?
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 18
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  SQL kitsendus mine lehele eelmine  1, 2
[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.