Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Da li su mi tabele ok?

[es] :: MySQL :: Da li su mi tabele ok?

Strane: 1 2

[ Pregleda: 4101 | Odgovora: 23 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.telenor.co.yu.



+303 Profil

icon Da li su mi tabele ok?16.08.2009. u 12:59 - pre 177 meseci
Ne znam kako da dam ime temi, ako neko zna bolje neka promeni :)
Zanima me sledece:
Pisem neku skriptu za razmenu lyrics-a. I osmislio sam mysql bazu na sledeci nacin:
Code:
-- phpMyAdmin SQL Dump
-- version 2.11.9.2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Aug 16, 2009 at 01:50 PM
-- Server version: 5.0.67
-- PHP Version: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `1234`
--

-- --------------------------------------------------------

--
-- Table structure for table `lyrics`
--

CREATE TABLE IF NOT EXISTS `lyrics` (
  `lid` int(15) NOT NULL,
  `song` varchar(20000) character set utf8 collate utf8_bin NOT NULL,
  PRIMARY KEY  (`lid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dumping data for table `lyrics`
--


-- --------------------------------------------------------

--
-- Table structure for table `song`
--

CREATE TABLE IF NOT EXISTS `song` (
  `sid` int(15) NOT NULL,
  `song` varchar(20000) character set utf8 collate utf8_bin NOT NULL,
  PRIMARY KEY  (`sid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `song`
--


Posto ce tabela song (glupo ime promenicu sve kasnije) imati sigurno oko 1.000.000 unosa da li mi je ovo najbolje resenje za bazu? Podatke iz song tabele bih izvlacio na osnovu sid ciju bih vrednost uzimao iz lid iz tabele lyrics. Mozda bi se koristila i pretraga ove tabele ne verujem da bi se to cesto radilo(ali nikad se ne zna). Dakle pitanje je da li bi ovo radilo ok? Takodje posto sam pocetnik u mysql bio bih zahvalan da mi kazete ako primetite jos neke greske u tabelama. Hvala :)
 
Odgovor na temu

stevs986
Nikolic Sladjan
Senior Software Developer
Alterset d.o.o
Beograd

Član broj: 121154
Poruke: 140
*.dynamic.sbb.rs.



+4 Profil

icon Re: Da li su mi tabele ok?16.08.2009. u 15:45 - pre 177 meseci
Bez uvrede, ali ovo mi je nekako malo "siromasna" baza za tu svrhu... Trebalo bi malo ozbiljnije da poradis na njoj...
Verovatno ce ti biti potrebna neka pretraga po izvodjacima, a ne vidim da postoji neka tabela u kojoj bi se nalazili izvodjaci.....
Pa odredjeni izvodjac moze imati vise albuma, pa pesme vezes za album... itd. Nemoj da zuris, samo razmisli da si ti korisnik jednog takvog sajta sta bi voleo da se nadje na njemu, da na sto brzi nacin nadjes odgovarajucu pesmu...
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.telenor.co.yu.



+303 Profil

icon Re: Da li su mi tabele ok?16.08.2009. u 16:21 - pre 177 meseci
Bice za izvodjace(tj vec ima) i ostalo. Dodacu jos gomilu stvari zanima me samo da li mi je pametno da u jednu tabelu strpam milion i kusur redova sa relativno mnogo sadrzaja u njima? Da li ce raditi normalno i sa nekom prihvatljivom brzinom? Mislim da hoce jer se sa osnovnom pretragom radi:
Code:
SELECT * FROM song WHERE sid=lid

Ali da li ce raditi normalno kad se pokrene pretraga koja u ovoj tabeli trazi rec "nothing" naprimer?
btw kad kazem normalno mislim na brzo :)
Da dodam da u tabelu song ne planiram da dodajem jos redova(osim ako ne treba) jer cu sve ostalo staviti u ostale tabele koje ce biti mnogo krace.
 
Odgovor na temu

stevs986
Nikolic Sladjan
Senior Software Developer
Alterset d.o.o
Beograd

Član broj: 121154
Poruke: 140
*.dynamic.sbb.rs.



+4 Profil

icon Re: Da li su mi tabele ok?16.08.2009. u 17:23 - pre 177 meseci
Pa sad, generalno treba izbegavati cuvanje velike kolicine tekstualnih podataka u bazi, alli u ovom slucaju, bas zbog pretrage ne mozes to da izbegnes....
Moraces da stavljas neka ogranicenja, recimo da rec za pretragu ne bude kraca od 3-4 znaka jer zamisli da imas sledecu situaciju SELECT * FROM song where song like '%a%' To bi ti vratilo sve rekorde iz baze, jer mislim da ne postoji pesma koja u svom tesktu nema makar jedno slovo a :)) .... Tako da kreni, probaj, pa ako zapnes neko ce ti ovde sigurno pomoci.....
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.telenor.co.yu.



+303 Profil

icon Re: Da li su mi tabele ok?16.08.2009. u 18:01 - pre 177 meseci
Napravio sam mali test. Ne znam kako mi ranije nije palo na pamet :) Dodao sam u tabelu 1,542,376 redova i dobio
Code:

SQL query:
SELECT * 
FROM `song` 
WHERE sid =21341
1 total, Query took 0.0006 sec

Ovo je znaci ok ali ako pokrenem pretragu za malo duzom reci dobijem da je query took 0.5878 sec sto je vec previse(ne samo vremenski nego zauzme i veliku kolicinu sistemskih resursa). Verovatno cu morati da napravim google custom search :) Hvala na odgovorima, ako negde zapnem pitacu. Takodje ako neko jos ima neku sugestiju neka se ne ustrucava da je iznese :D
 
Odgovor na temu

stevs986
Nikolic Sladjan
Senior Software Developer
Alterset d.o.o
Beograd

Član broj: 121154
Poruke: 140
*.dynamic.sbb.rs.



+4 Profil

icon Re: Da li su mi tabele ok?16.08.2009. u 18:35 - pre 177 meseci
Da ali ne zaboravi da ces ti uglavno pretrazivati po recima a ne po id - u...
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.telenor.co.yu.



+303 Profil

icon Re: Da li su mi tabele ok?16.08.2009. u 19:07 - pre 177 meseci
Uglavnom cu pretrazivati po id(tj procitaj dalje :)). Vecina korisnika trazi pesmu po imenu, a ja imena drzim u drugoj tabeli. U tabeli sa tekstovima polje sid mi sluzi da oznaci pesmu cije je ime napisano u drugoj tabeli.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Da li su mi tabele ok?17.08.2009. u 06:23 - pre 177 meseci
1. 2 tabele sa po 2 kolone nisu bas nesto sto moze da se komentarise
2. zaboravi pretragu tipa ... LIKE '%nesto%' ... na tabeli sa ista slogova trajace duze nego sto ce bilo ko hteti da ceka
3. mysql ima FULL TEXT SEARCH opciju ali SAMO na MYISAM tabelama.
4. obrati paznju da MyISAM tabele
- nisu crashe safe
- nisu transakcione


posle svega ovoga, reci cu ti LUCENE!!!

dakle, ako hoces da imas iole brzu full text pretragu - najbrze open source resenje ti je LUCENE .. nema nikakve veze sa mysql-om, nije relaciona baza podataka, ali satire koliko je brze od bilo koje relacione baze kada je full text pretraga u pitanju .... neki ozbiljniji projekat koji lici na to o cemu pricas bi realno bio baziran na hibridnoj bazi gde be deo (lyrics) sedeao na lucene-u a ostatak na mysql-u ... sve to onda vuce neke druge stvari za sobom .. no to je vec sve mnogo daleko od scope-a mysql foruma :)


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Da li su mi tabele ok?17.08.2009. u 06:27 - pre 177 meseci
Citat:
Milos911: Uglavnom cu pretrazivati po id(tj procitaj dalje :)). Vecina korisnika trazi pesmu po imenu, a ja imena drzim u drugoj tabeli. U tabeli sa tekstovima polje sid mi sluzi da oznaci pesmu cije je ime napisano u drugoj tabeli.


dve tabele koje si poslao ne daju dovoljno informacija da bi ovo sto si ovde napisao imalo smisla ... a ako imas i trecu i cetvrtu i ... tabelu onda si trebao da ih stavis zajedno sa ove dve

sto se tice toga kako ce korisnici da pretrazuju - mozda ces ti da ih limitiras da mogu samo da browsuju kroz sajt ... "na slovo na slovo" i da tako dodju (ili sa sajta odu) do toga sto traze .. ili ces da se uzdas da ce google da ti indexira sajt pa da ti ne moras ... ali ako hoces da imas sajt koji nudi neku pretragu - onda moras da im das mogucnost da traze "sta im treba" a ne da to limitiras ...

sto se tice pitanja da li ce upit po id-u da bude spor - NECE ... dakle primary key upit (select * from t1 where PK=xyz) ce se izvrisi "odma" bez obzira koliko milijardi slogova imas u tabeli ...
 
Odgovor na temu

Shinhan
PHP programmer
Subotica

Član broj: 12327
Poruke: 372
*.static.isp.telekom.rs.

Jabber: shinhan@elitesecurity.org
ICQ: 400847988


+4 Profil

icon Re: Da li su mi tabele ok?17.08.2009. u 07:15 - pre 177 meseci
Citat:
bogdan.kecman:
posle svega ovoga, reci cu ti LUCENE!!!

dakle, ako hoces da imas iole brzu full text pretragu - najbrze open source resenje ti je LUCENE .. nema nikakve veze sa mysql-om, nije relaciona baza podataka, ali satire koliko je brze od bilo koje relacione baze kada je full text pretraga u pitanju ....


A šta misliš o Sphinx?
"Common sense is not so common." - Voltaire
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Da li su mi tabele ok?17.08.2009. u 07:25 - pre 177 meseci
Citat:
Shinhan: A šta misliš o Sphinx?


ne mislim nista ... oni imaju full text search storage engine za mysql .. i to kao radi ... ali ja to nikada nisam probao tako da mi je iskustvo sa njim == 0. ono sto sam cuo od kolega je da "nije brzi od lucene-a" tako da ja i dalje navijam za lucene :) ... to kao sto napomenuh ne znaci mnogo posto ja nisam probao sphinx a konja kog nisam jahao ne bi da procenjujem na osnovu onoga sto "drugi" pricaju
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.telenor.co.yu.



+303 Profil

icon Re: Da li su mi tabele ok?19.08.2009. u 22:37 - pre 177 meseci
Napisao sam odgovor ali je nestao a nije mi stiglo objasnjenje o obrisanoj poruci...
Bogdane imam ja sve tabele ali mi se ne daju jer mislim da imam par super ideja za sajt a iz ostalih tabela se lako moze zakljuciti sta sam planirao...Hvala za link, pogledao sam ali ono se oslanja na javu koliko sam mogao da primetim, a ja o njoj nemam pojma. Ali nema veze definitovno sam odlucio da ne ukljucujem pretragu po recima pesama... Hvala na pomoci.:)
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Da li su mi tabele ok?20.08.2009. u 08:10 - pre 177 meseci
ako oces da zaobidjes javu to je sphinx (ja nisam koristio) a i ako se dobro secam bio je neki lucene port na c ...

sve u svemu - ono o cemu ti treba da razmisljas je
- pristup podacima preko primarnog kljuca je jako brz
- partitioning (trenutno nije bas 100% bug free ali dok ti se zalaufa sajt ce verovatno biti stabilno resenje)


 
Odgovor na temu

ihti
Jasmin I

Član broj: 3794
Poruke: 30
92.36.163.*

Sajt: www.inservio.ba


Profil

icon Re: Da li su mi tabele ok?27.08.2009. u 00:42 - pre 177 meseci
ima Lucene port na skoro svaki popularniji jezik..

evo za PHP
Zend_Search_Lucene http://framework.zend.com/manual/en/zend.search.lucene.html
NO FATE. ONLY THE POWER OF WILL.
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.telenor.co.yu.



+303 Profil

icon Re: Da li su mi tabele ok?01.09.2009. u 13:57 - pre 177 meseci
Najzad zavrsih konvertovanje glupe baze. I naleteh na prvi problem:
Moram da selektjem samo prvo slovo iz tabele artist. Citanjem manuala i guglanjem sam dosao do sledeceg koda:
Code:
SELECT artist FROM artist WHERE LEFT(artist, 1) ='a'

Ovo bi valjda trebalo da mi selektuje sve redove koji pocinju sa slovom a. Ali ne radi. U cemu gresim? Takodje procitao sam da je left() brze od substring(). DA li je to tacno?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Da li su mi tabele ok?01.09.2009. u 14:57 - pre 177 meseci
je oces da selektujes samo prvo slovo (select left(kolona,1) from tabela;) ili hoces da selektujes sve kolone koje imaju prvo slovo a (select kolona from tabela where left(kolona,1)='a';)

obrati paznju da se ne koristi index ovde vec se radi table scan - ako ces da imas cest upit ovaj - ako kazes like 'a%' koristice se index, ali ce biti mnooooooogo brze da dodas char(1) polje i u njega upises (moze i trigerom) vrednost prvog slova - a tu kolonu indexiras .. sitan duplikad podataka ali veliko ubrzanje...

inace trudi se da ti tabele i kolone nemaju isto ime ... to radi u vecini slucajeva ali ume da napravi problem - posebno u citanju upita

Code:

mysql> create table artist (artist char(10));     
Query OK, 0 rows affected, 2 warnings (0.00 sec)

mysql> insert into artist values ('abba'),('bebba'),('cobby'),('decca');
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select artist from artist where left(artist,1)='a';
+--------+
| artist |
+--------+
| abba   | 
+--------+
1 row in set (0.05 sec)

mysql> insert into artist values ('azra');
Query OK, 1 row affected (0.00 sec)

mysql> select left(artist,1) from artist;
+----------------+
| left(artist,1) |
+----------------+
| a              | 
| b              | 
| c              | 
| d              | 
| a              | 
+----------------+
5 rows in set (0.00 sec)

mysql> select distinct left(artist,1) slovo from artist order by slovo;
+-------+
| slovo |
+-------+
| a     | 
| b     | 
| c     | 
| d     | 
+-------+
4 rows in set (0.00 sec)

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Da li su mi tabele ok?01.09.2009. u 15:00 - pre 177 meseci
btw, left jeste brze od substring
ako ti problem pravi komparacija velikih i malih slova, promeni kolaciju nad kolonom - ako ti je kolacija binarna onda se velika i mala slova razlikuju, ako nije onda se ne razlikuju - stavi na primer utf_general_ci na primer
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.telenor.co.yu.



+303 Profil

icon Re: Da li su mi tabele ok?01.09.2009. u 15:08 - pre 177 meseci
Samo prvo slovo:) Koalicija je bila problem. Hvala ti mnogo mucio bih se sa ovim do sutra i ne bih provalio u cemu je problem...
Citat:

ali ce biti mnooooooogo brze da dodas char(1) polje i u njega upises (moze i trigerom) vrednost prvog slova - a tu kolonu indexiras .. sitan duplikad podataka ali veliko ubrzanje...

Ovo cu i da uradim, mozes li samo da mi objasnis kako sa trigerom? Ako je previse komplikovano(tebi da objasnis) uradicu preko php-a, ali bih voleo da naucim kako da uradim direktno preko mysql-a.
Inace stavio sam da mi koalicija bude utf_bin(iskreno ne snalazim se previse dobro sa koalicijama pa sam izabrao ovu zato sto je utf pa da mogu i nasa slova da se upisu normalno(valjda nisam sad lupio nesto pogresno:)))
I hvala za savet za imena kolona, ja sam mislio da je svejedno pa sam za sve stavljao isto ime kolone i tabele zbog lakseg snalazenja.
I jos samo jedno pitanje: Ako stavim auto_increment vrednost za neko polje, i brojanje stigne do 1000. Sta ako ja obrisem red sa brojem 500. Da li ce ga kasnije auto_increment popuniti ili ce nastaviti da broji dalje bez obzira sto je red sabrojem 500 obrisan?

[Ovu poruku je menjao Milos911 dana 01.09.2009. u 16:21 GMT+1]
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Da li su mi tabele ok?01.09.2009. u 19:19 - pre 177 meseci
Citat:
[url=/p2375698]
Inace stavio sam da mi koalicija bude utf_bin(iskreno ne snalazim se previse dobro sa koalicijama pa sam izabrao ovu zato sto je utf pa da mogu i nasa slova da se upisu normalno(valjda nisam sad lupio nesto pogresno:)))


imas gomilu utf8 kolacija.
Code:

mysql> show collation like 'utf%';
+--------------------+---------+-----+---------+----------+---------+
| Collation          | Charset | Id  | Default | Compiled | Sortlen |
+--------------------+---------+-----+---------+----------+---------+
| utf8_general_ci    | utf8    |  33 | Yes     | Yes      |       1 | 
| utf8_bin           | utf8    |  83 |         | Yes      |       1 | 
| utf8_unicode_ci    | utf8    | 192 |         | Yes      |       8 | 
| utf8_icelandic_ci  | utf8    | 193 |         | Yes      |       8 | 
| utf8_latvian_ci    | utf8    | 194 |         | Yes      |       8 | 
| utf8_romanian_ci   | utf8    | 195 |         | Yes      |       8 | 
| utf8_slovenian_ci  | utf8    | 196 |         | Yes      |       8 | 
| utf8_polish_ci     | utf8    | 197 |         | Yes      |       8 | 
| utf8_estonian_ci   | utf8    | 198 |         | Yes      |       8 | 
| utf8_spanish_ci    | utf8    | 199 |         | Yes      |       8 | 
| utf8_swedish_ci    | utf8    | 200 |         | Yes      |       8 | 
| utf8_turkish_ci    | utf8    | 201 |         | Yes      |       8 | 
| utf8_czech_ci      | utf8    | 202 |         | Yes      |       8 | 
| utf8_danish_ci     | utf8    | 203 |         | Yes      |       8 | 
| utf8_lithuanian_ci | utf8    | 204 |         | Yes      |       8 | 
| utf8_slovak_ci     | utf8    | 205 |         | Yes      |       8 | 
| utf8_spanish2_ci   | utf8    | 206 |         | Yes      |       8 | 
| utf8_roman_ci      | utf8    | 207 |         | Yes      |       8 | 
| utf8_persian_ci    | utf8    | 208 |         | Yes      |       8 | 
| utf8_esperanto_ci  | utf8    | 209 |         | Yes      |       8 | 
| utf8_hungarian_ci  | utf8    | 210 |         | Yes      |       8 | 
+--------------------+---------+-----+---------+----------+---------+
21 rows in set (0.00 sec)


utf8_unicode_ci je odlican .. ljudi sa nasih prostora vole da koriste utf8_slovenian_ci ... tako da koristi jedan od ta dva ... utf8_bin ti nece dati nista korisno, nece ti raditi sortiranje kako treba, poredjenje ce biti binarno (dakle velika i mala slova su razlicita) i slicno ..

Citat:

I hvala za savet za imena kolona, ja sam mislio da je svejedno pa sam za sve stavljao isto ime kolone i tabele zbog lakseg snalazenja.


jeste potpuno svejedno sto se mysql-a tice ... (vrlo redak slucaj moz da bude da ne valja) .. ali je logicki potpuno pogresno - ne kapiram kako se sa istim imenom kolone i tabele "lakse snalazis" ... pricano je vise puta o standardima i ovde i na netu .. pogledaj malo po forumu nacices sigurno ... standard postoji samo jedan i jaaaaako je bajat .. dosta stvari iz njega ljudi namerno ne postuju ... dosta ljudi ga ignorise etc... no .. nije to tema

Citat:

Ako stavim auto_increment vrednost za neko polje, i brojanje stigne do 1000. Sta ako ja obrisem red sa brojem 500. Da li ce ga kasnije auto_increment popuniti ili ce nastaviti da broji dalje bez obzira sto je red sabrojem 500 obrisan?


nece nikad popuniti taj sa 500 ako ima nesto posle njega.

ako je u pitanju myisam tabela, u tabeli se cuva "sledeci auto increment broj" i taj ce se koristiti "naredni put kada treba" cak i ako se resetuje baza etc...
ako je u pitanju innodb, kada se prvi put pristupi tabeli (od trenutka startovanja servera), innodb ce izracunati max()+1 i to ce zapamtiti kao "narednu vrednost" koju onda povecava za auto_increment_increment. Kada se baza resetuje, sledeci put se opet preracunava nova vrednost za auto increment polje.


ovo za triger .. aj videcu da nacukam neki primer .. sad sam malo u guzvi

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Da li su mi tabele ok?01.09.2009. u 19:47 - pre 177 meseci
Citat:
mozes li samo da mi objasnis kako sa trigerom?


nisam bas dobar sa objasnjavanjem tako da .. evo ti primer kako to radi .. pa pitaj ako neki deo nije jasan:

Code:

mysql> drop table if exists t4;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> create table t4 (id int auto_increment primary key, autor varchar(100), slovo char(1), key na_slovo_na_slovo (slovo)) engine=innodb;
Query OK, 0 rows affected, 4 warnings (0.01 sec)

mysql> 
mysql> drop trigger if exists naslovo_insert;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> drop trigger if exists naslovo_update;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> 
mysql> delimiter |
mysql> CREATE TRIGGER naslovo_insert BEFORE INSERT ON t4
    ->  FOR EACH ROW BEGIN
    ->    SET NEW.slovo = LEFT(NEW.autor,1);
    ->  END
    -> |
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE TRIGGER naslovo_update BEFORE UPDATE ON t4
    ->  FOR EACH ROW BEGIN
    ->    IF NEW.autor <> OLD.autor THEN
    ->      SET NEW.slovo = LEFT(NEW.autor,1);
    ->    END IF;
    ->  END
    -> |
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql> delimiter ;
mysql> 
mysql> insert into t4 (autor) values ('pera'), ('zika'), ('laza'), ('mika'), ('jovica'), ('mile'), ('sele'), ('stanojka'), ('milojka'), ('sarulja');
Query OK, 10 rows affected (0.00 sec)
Records: 10  Duplicates: 0  Warnings: 0

mysql> 
mysql> select * from t4;
+----+----------+-------+
| id | autor    | slovo |
+----+----------+-------+
|  1 | pera     | p     | 
|  2 | zika     | z     | 
|  3 | laza     | l     | 
|  4 | mika     | m     | 
|  5 | jovica   | j     | 
|  6 | mile     | m     | 
|  7 | sele     | s     | 
|  8 | stanojka | s     | 
|  9 | milojka  | m     | 
| 10 | sarulja  | s     | 
+----+----------+-------+
10 rows in set (0.00 sec)

mysql> 
mysql> update t4 set autor = 'zizelina' where id = 6;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> 
mysql> select * from t4;
+----+----------+-------+
| id | autor    | slovo |
+----+----------+-------+
|  1 | pera     | p     | 
|  2 | zika     | z     | 
|  3 | laza     | l     | 
|  4 | mika     | m     | 
|  5 | jovica   | j     | 
|  6 | zizelina | z     | 
|  7 | sele     | s     | 
|  8 | stanojka | s     | 
|  9 | milojka  | m     | 
| 10 | sarulja  | s     | 
+----+----------+-------+
10 rows in set (0.00 sec)

mysql> 

 
Odgovor na temu

[es] :: MySQL :: Da li su mi tabele ok?

Strane: 1 2

[ Pregleda: 4101 | Odgovora: 23 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.