Hirdetés

Új hozzászólás Aktív témák

  • DS39
    nagyúr

    Sziasztok!

    Egy Triggeres kérdésem lenne hozzátok: MS SQL 2012-ben írok egy triggert, amely INSERT-t hatására fut le, és az új rekord egyik mezőjét frissíti. Hogyan kell hivatkozni az újonnan beszúrt rekordra?
    Tehát csak és kizárólag az új sor egy celláját kell update-elnie.

    Most csak úgy működik, ha megadom az új rekord objectid-ját.

    Jelenleg így néz ki:
    CREATE TRIGGER nepesseg_szum ON OVEZETEK
    AFTER INSERT
    AS
    BEGIN

    DECLARE @TERULET GEOMETRY;
    SET @TERULET=(SELECT SHAPE FROM OVEZETEK WHERE OBJECTID=26);
    UPDATE OVEZETEK SET Nepesseg_ossz = (SELECT SUM (TELEPULES.LAKOSOK) FROM TELEPULES
    WHERE TELEPULES.SHAPE.STWithin(@TERULET)=1) WHERE OVEZETEK.OBJECTID=26;
    RETURN
    END;

    Azt akarom, hogy ne kelljen megadni az objectid-t, hanem mindig a beszúrt sorra fut le. Hogyan lehetne ezt megoldani?

    Szia!

    Ezt úgy lehet megoldani, hogy megnézed mi lenne insertálva:

    INSTEAD OF INSERT
    AS
    BEGIN

    INSERT INTO TABLANEV (oszlopnevek....)

    SELECT oszlopnevek...
    FROM INSERTED I

    END

    --------
    itt a SELECT-en belül használhatsz CASE WHEN-eket, hogy adott oszlop értéke ha ez, akkor legyen helyette amaz. remélem érted :)

Új hozzászólás Aktív témák