Zdravím, jak vložit do tabulky řádek pouze pokud je splněna určitá podmínka. Něco jako "insert into tab set data = 'xxx' where nevim != 'yyy' " - pokud není nalezena hodnota 'yyy' ve sloupci nevim, pak vlož nový řádek....
Fórum › MySQL
Příkaz insert s where
unikatni index jde udelat pres vic sloupcu
insert into tabulka select * from jina je jen na kopirovani dat z jednoho mista na druhe .. co vybere select se vlozi insertem
#5 Pavelv
Záleží a tom, co všechno chceš kontrolovat. možná ti skutečně bude stačit unikánost přes více sloupců.
Ten select by mohl vypadat třeba takto:
INSERT INTO user (nick) SELECT 'Kit' AS nick WHERE lenght('Kit')>=3;
Jenže se to dá udelat jednodušeji viz výše.
vykonavat logiku na urovni databazy neni velmi vhodne ... takto nezistis ci sa nieco vlozilo alebo nie (resp musis kontrolovat ci ti vratilo cislo co nemusi fungovat v kazdej databaze a zaroven nemozes vediet preco je to cislo take ake je)
#8 Flowy
Kam patří logika, když ne do databáze?
Stavové kódy fungují velmi dobře a bývá k nim i textový popis. Co víc by sis mohl přát?
Pro zajímavost: Stavový kód není číslo, ale string.
#11 Kit
Takže bych musel překopat tabulku, jestli se nepletu. V tabulce mam několik číselných sloupců, a potřebuji zajistit, aby při vkládání dat, vyhovovala nová hodnota vzorci "stará - 5 < nová < stará + 5". A takto pro každý sloupec. Jde mi o to, jestli je jednodušší to řešit na úrovni MySQL, nebo php, kterým tam ty hodnoty vkládam.
#12 Pavelv
Pokud tím překopáním myslíš jeden ALTER TABLE, tak ano.
Možná by na to stačila nějaká vnořená procedural nebo ještě lépe trigger.
Proč pro každý sloupec? Máš takových víc? Zkus ten trigger.
#13 Kit
Díky, podívám se na ten triger. Představ si, že mám například tabulku, kde každý sloupec reprezentuje nějakou měřenou veličinu, která se nemůže skokově měnit. Takže při vložení nového řádku si vždy zkontroluji zda nedošlo k nějakému omylnému zadání dat. Myslel jsem, že by se to nechalo řešit přes IF v DB, ale zřejmě ne. Jdu vyzkoušet ten triger...
#15 Kit
Výsledky zpracovává několik scriptů, navíc potřebuji aby zpracování bylo co nejrychlejší, a proč zbytečně plnit databázi nesmyslama. Proto to chci řešit na vstupu. Data přijmu na serveru pomocí GET requestu, zpracuji v php, a uložím. Takže řešení bude jedině v tom php, nebo mysql
#19 Kit
zdalo sa mi to "zasadne" velmi vylucujuce ... napr nedokazes prenasat query so statusom 302 cize musis dat data do get (mam stranku v facebook iframe a facebook mi preposiela data cez query ... lenze tie data musi nejak dostat - najlepsie cez query ... lenze na facebook stranku sa musim dostat z OpenGraph objektu ktory ma vlastnu adresu a z tejto musim uzivatela presmerovat (a facebook botovy zobrazit dany objekt) ... kedze presmerovavam na iny server (na fb) tak som pouzil radsej 302 aby sa niekto nezasekol na zakazanom redirecte
moznost ulozit OG objekt do zobrazovanej stranky som premyslel a neni mozna - potrebujem vztah dataPreStranku:Stranka ako M:1
ak si ale to zasadne myslel ako vecsinou tak zase nic :)
#25 Flowy
Třeba takové meteostanice často metodu POST ani neumí. Další výjimka z pravidla.
Začátečníci by se měli učit podle pravidel. Je například dobré jim zatajit goto, else a další nežádoucí klíčová slova. Výjimky jsou určeny pro pokročilé, kteří vědí, co dělají.
nemyslim si ze zatajovanie informacii comukolvek pomoze ... skor verim v slobodnu volbu a ta je najlepsia z uplnych informacii (pripadne pridat vlastny nazor pre objasnenie) ... samozrejme chce to viac prace
#27 Flowy
V tom případě mi není jasné, proč se začátečníkům v OOP zatajuje polymorfismus, DI, LSP a další užitečné principy ze SOLID. V SQL místo JOIN píší IN a používají zastaralé ovladače, které neumí prepared statements. Místo šablon zase nějaké Smarty či co. Proč se tedy učí tyhle nesmysly? Protože jsou jim zatajovány kvalitní technologie.
spis ucitele se zivi znalostmi php4 a prakticky se php uz dal nezabyvaji. Ten gogglem najdes navody a priklady pro php4.
Tudle jsem chtel po jednom nasem pedagogovi, aby si nastavil v programu kodovani na utf nebo aspon konverzi pomoci SET NAMES. Myslis, ze to udelal? Takovou praci mi dalo pri upgradu serveru prevest vsechny db do utf z nejakych pseudo kodovani jako latin1, win1250, ... A kvuli nemu jsem musel jeho db prevadet zpet na latin1 a nahrat do db jakoze je to utf8 :)
#29 peter
kdyz se chces neco naucit, tak se to musis naucit sam..
Malo ktery ucitel, ktery v oboru nepracuje, uci aktualni veci a hlavne vubec sleduje trendy v oboru.. (to zminoval i jeden profesor pedagogiky - vetsina ucitelu se neco nauci, a uci to pak porad - tudiz uci historii daneho predmetu + ze ucitele jsou vlastne ti nejmene pruzni pracovnici z oboru, kde se pouziva "mozek" - proste se brani zmenam)
Mimochodem OOP neni tak snadne na nauceni.. clovek musi nejprve pochopit jeho vyhody a principy - a kdyz je do toho hozen rovnou, vznikaji naivni implementace nebo dokonce proceduralni kod v oop
Takze za me je lepsi zacit na proceduralnim jazyku a pak teprve clovek dokaze ocenit vsechny vyhody oop
#30 KIIV
Tuhle jsem přepisoval jeden procedurál do OOP. Vyšel poloviční, jednodušší a robustnější. Takže jsem se procedurálem přestal zabývat.
Když má někdo v každé třídě jiné názvy metod, tak se polymorfismus dělá blbě.
#26 Kit
http://martinfowler.com/articles/distributed-objects-microservices.html
Given this uncertainty, the most important thing a writer like myself can do is to communicate as clearly as I can the lessons we think we've learned, even if they are contradictory. Readers will make their own decisions, it is our job as writers to make sure those decisions are well-informed ones, whichever side of the architectural line they fall.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Mysql trigger after insert , before insert — založil Luboš
Hromadný insert — založil Paja2
Podmíněný insert — založil hlucheucho
Insert do ms sql v c# — založil JannyM
Moderátoři diskuze