Elikkä pystyykö SQL:llä jotenkin tekemään automaattisesti tuollaisen monisarakkeisen indeksin?
esimerkki:
Taulu id id2 teksti 1 1 jotain 1 2 jotain muuta 1 3 ja 2 1 vielä 2 2 vähän 3 1 näitä 4 1 tähän 4 2 jne.
Kyllähän ton nyt koodissa pystyy toteuttamaan, mutta onko olemassa jotain "virallista" tapaa?
Jos tarkoitat vain datan hakemista tuossa järjestyksessä niin se onnistuu helposti lisäämällä SQL-lauseeseen "ORDER BY id, id2".
SQL:sssä pystyy myös määrittämään kahden tai useamman sarakkeen indeksejä (hakurakenteita).
http://dev.mysql.com/doc/refman/5.0/en/create-index.html
ehkä selitin asian vähän heikosti
eli
että id2 olisi ns. automaattinen kenttä, jolloin kun lisään insertissä id1:n niin id2 tulis automaattisesti oikein. Vähän kuin auto_increment, mutta ehdollisesti.
Tietääkseni SQL kantoihin on mahdollista tehdä omiafunktioitakin ja miten se asiaaliittyy tulee siitä, että taulua luodessa on mahdollista antaa oletusarvo tai oletusfunktio tiedolle. Yleisimpiä funktioita lienee ajanhaku NOW()-funktiolla, jota näkee tauluissa., mutta samalla idealla myös oman funktioin tekeminen ja sen liittäminen oletus "arvoksi" luulisi onnistuvan.
Sitten laadukkaimissa kannoissahan taisi olla, jonkinlainen tapa luoda tapahtumiin perustuvia kyselyjä eli esim. taulukkoon tiedon lisäyksen jälkeen on mahdollista suorittaa, joku toinen tallennettu kysely, jolla tuon arvon asettaminen voisi myös onnistua tai ehkä en tiedä.
Jos haluat lisätä yhden rivin ID1:n arvolle 1 voisit ehkä tehdä näin :
insert into foo
select 1,max(id2)+1, 'neljäs' from foo where id1=1
Osaat varmaan soveltaa omiin tarpeisiisi sopivaksi
Triggereillä voidaan tehdä tiettyjä tapahtumia kun esim. tietokantaan lisätään tietoa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.