Portál AbcLinuxu, 9. května 2025 01:38

Dotaz: SQLite Insert trigger?

23.10.2024 11:44 Kovář
SQLite Insert trigger?
Přečteno: 1290×
Odpovědět | Admin
Mějme tabuku v ní 3 prvky time1,time2, time3 typu int jak by měl vypadat podminka pro before insert trigger která by zkontrolavala a povolila vložení jen když je naplněn jeden jediný z těch time a ostatní dva jsou NULL?

Respektive je šance na urovni SQL chtít, aby uživatel do pole time3 vyplnil třeba END-5min a ono by tento vyraz vypočetlo jako (hodnota pole END-5minut) a výsledek uložilo do time3 nebo je to na SQLite moc a musím to řešit na úrovni programu, který SQL používá pro ukládání dat?

Děkuji a omlovám se možná za triviální dotaz, SQLite si hru pár dní

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

Odpovědi

23.10.2024 13:19 X
Rozbalit Rozbalit vše Re: SQLite Insert trigger?
Odpovědět | | Sbalit | Link | Blokovat | Admin
a]
aby uživatel do pole time3 vyplnil třeba END-5min
Tohle bych nechtel ani jako uzivatel. Vyres to na urovni proramu at do dabaze codi normalni hodnoty.

b] Vzor z manualu:
INSERT INTO contacts (contact_id, contact_name) SELECT account_no, supplier_name FROM suppliers WHERE category IS NOT NULL;
Mimocodem o jakem SQL jazyku se bavime?
2.11.2024 23:11 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: SQLite Insert trigger?
Odpovědět | | Sbalit | Link | Blokovat | Admin
CREATE TRIGGER validate_single_time_column_not_null
BEFORE INSERT OR UPDATE ON my_table
FOR EACH ROW
BEGIN
    SELECT
        CASE
            WHEN (NEW.time1 IS NOT NULL AND NEW.time2 IS NOT NULL) OR
                 (NEW.time1 IS NOT NULL AND NEW.time3 IS NOT NULL) OR
                 (NEW.time2 IS NOT NULL AND NEW.time3 IS NOT NULL) THEN
                RAISE(ABORT, 'Pouze jeden ze sloupců time1, time2 nebo time3 smí obsahovat hodnotu NOT NULL.')
        END;
END;

Daleko jednodušší však bude insert pouze jednoho ze tří sloupců. Zbývající budou automaticky NULL.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

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.