Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 06. 01. 2012 00:13 — Editoval RePRO (06. 01. 2012 00:15)

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Databáze - Trigger

Zdravím,
mám dvě databáze (nazvěme je první a druhá).
Dejme tomu, že první databáze má tabulku usersBB, druhá databáze má tabulku jenom users.

Tabulka usersBB v první databázi vypadá následovně:
usersBB = [bbID, bbNickname, bbPassword, ... ]
Tabulka users v druhé databázi vypadá následovně:
users = [ID_user, nick, gender, pass, gravatar, mail, law, group, colorOfNick, last_activity, isOnline]

No já potřebuji zajistit následující:
Pokaždé, když se přidá, upraví, smaže řádek z první tabulky (první databáze), tak aby se to projevilo i u druhé tabulky (druhá databáze).

Takže, pokud se v první tabulce udělá třeba INSERT (nový uživatel), tak mi stačí naklonovat (zkopírovat) bbID, bbNickname, bbPasword, možná i některé další sloupce z tabulky usersBB do tabulky users.

To znamená prakticky (pseudojazykem) toto:
databáze2.users.ID_user = databáze1.usersBB.bbID
databáze2.users.nick = databáze1.usersBB.bbNickname
databáze2.users.pass = databáze1.usersBB.bbPassword

Vůbec nevím co s tím, používám PHP a MySQL.
Byl jsem odkázán na TRIGGER, potřeboval bych ukázku přímo k tomuto problému. Dynamicky to (nějak) zajistit.
Snad mi rozumíte. Nějaké rady, nápady?

Díky, RePRO.


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#2 06. 01. 2012 00:41

Jookyn
Místo: Mar. Lázně / Praha
Příspěvky: 143
Reputace:   11 
 

Re: Databáze - Trigger

V MySQL už jsem nedělal ani nepamatuju (a triggery vůbec), ale třeba pro MSSQL by to mohlo vypadat nějak takhle...

CREATE TRIGGER tr_usersBB_ins ON usersBB
FOR INSERT
AS
BEGIN
    INSERT INTO database2.users (ID_user, nick, pass)
    SELECT bbID, bbNickname, bbPassword FROM inserted
END

CREATE TRIGGER tr_usersBB_del ON usersBB
FOR DELETE
AS
BEGIN
    DELETE FROM database2.users WHERE ID_user IN (SELECT bbID FROM deleted)
END

S tim, že nevim, jestli to půjde z jedný databáze na druhou jednoduše nebo bude potřeba něco ponastavovat. V MySQL bude jazyk pro zápis triggeru vypadat asi trochu jinak...

Trigger je vlastně něco jako funce přiřazená tabulce, která se spustí, pokud nastane na tabulce nějaká akce (např. FOR INSERT znamená, že se to spustí v průběhu vkládání do tabulky). Tabulka inserted by měla obsahovat všechny řádky, které se uživatel pokouší vložit.

Offline

 

#3 06. 01. 2012 15:45

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Databáze - Trigger

Super, díky. Pro ukázku mi to určitě stačí...
No a ten Trigger vytvořím kde? Omlouvám se za hloupé dotazy, ale potřebuju v tom mít jasno. :-)


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#4 06. 01. 2012 16:22 — Editoval gladiator01 (06. 01. 2012 16:27)

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Databáze - Trigger

↑ RePRO:
V phpmainadminu (nebo co používáš) dáš do pole pro ruční vkládání sql příkazů a potvrdíš (prostě uděláš to co s ostatními sql příkazy).

Jen si najdi dokumentaci k mysql a zkontroluj syntaxi mezi myslq a MSSQL může být trochu rozdíl.


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#5 06. 01. 2012 17:03

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Databáze - Trigger

Zdravím,
ano, TRIGGERS nejsou žádná věda, musíme si však ale uvědomit, že já mám každou tabulku v jiné databázi.
Použít USE? Jak se to řeší? Každopádně díky za připomínky.


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#6 06. 01. 2012 23:42

Jookyn
Místo: Mar. Lázně / Praha
Příspěvky: 143
Reputace:   11 
 

Re: Databáze - Trigger

Určitě budeš ten trigger vytvářet na tý tabulce usersBB, jak se odkázat v tom triggeru na cizí databázi v MySQL (a vlastně asi ani v MSSQL) pořádně nevim, ale to určitě půjde vygooglit. Asi bych zkusil do toho triggeru dát normálně USE.

Offline

 

#7 07. 01. 2012 00:59

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Databáze - Trigger

↑ Jookyn:
Kdyby si něco vygooglil, nebo našel, určitě dej vědět. ;)
Já zatím bez výsledku.


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson