Portál AbcLinuxu, 14. května 2025 11:57

Dotaz: podmienene vkladanie dat

7.5.2010 22:04 Juro
podmienene vkladanie dat
Přečteno: 321×
Odpovědět | Admin

Zdravim, mam 2 tabulky:

CREATE TABLE data(
id INTEGER PRIMARY KEY,
x INTEGER);

CREATE TABLE time(
id INTEGER,
y INTEGER,
FOREIGN KEY(id) REFERENCES data(id));

V prvej tabulke su ulozene nejake udaje a v druhej je cas, kedy boli tieto udaje vlozene do prvej tabulky (pre jednoduchost je y INTEGER a posiela ho aplikacia, ktora nad databazou bezi).

Data sa do tabuliek vkladaju nasledovne:

- ak sa hodnota x uz v tabulke data nachadza, tak sa ulozi iba casovy udaj y do tabulky time

- ak sa hodnota x v tabulke data nenachadza, tak sa v nej ulozi a takisto sa ulozi do tabuly time aj casovy udaj y

Potreboval by som poradit prave s tymto dotazom na vkladanie dat. Dakujem za rady

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.5.2010 08:56 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: podmienene vkladanie dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
K tomuhle slouží trigerry. Jak přesně se implementují záleží na zvoleném RDBMS. Pro MySQL najdeš návod s příklady třeba tady, pro Oracle pak třeba tady.
AraxoN avatar 8.5.2010 09:17 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: podmienene vkladanie dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ak to je mysql, tak to pozná konštrukciu INSERT ... ON DUPLICATE KEY UPDATE, ktorá toto zjednoduší.

K Tvojim tabuľkám by som chcel podotknúť, že by si mal naštudovať a používať tri dôležité veci, ktoré tam mne osobne chýbajú: NOT NULL, INDEX-y (vrátane UNIQUE) a správne dátové typy (INT vs DATETIME).
Josef Kufner avatar 25.5.2010 18:56 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: podmienene vkladanie dat
Další užitečná konstrukce je INSERT IGNORE, což je obyčejný insert, kterému nevadí, když se něco nepovede vložit (např. kvůli unique indexu). Úspěšnost lze testovat pomocí mysql_affected_rows().
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.