DO-lohkot ja anonyymi koodi
Suorita tilapäistä PL/pgSQL-koodia DO-lohkoilla, hallitse dollar-quotingia ja käytä DO-lohkoja kertaluonteisiin migraatioihin.
DO-lohkot ja anonyymi koodi on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Mikä on DO-lohko
DO-lohkon avulla voitte suorittaa PL/pgSQL-koodia määrittelemättä nimettyä funktiota. Se sopii erinomaisesti kertaluonteisiin migraatioihin ja tilapäisiin komentosarjoihin.
DO-lohkon perusteet
Minimaalinen syntaksi:
DO $$
BEGIN
RAISE NOTICE 'Hello from PL/pgSQL';
END;
$$ LANGUAGE plpgsql;
-- The language defaults to plpgsql, so you can omit it:
DO $$ BEGIN RAISE NOTICE 'Hi'; END $$;Dollar-quoting
$$-erotin välttää heittomerkkien suojaamisen. Voitte käyttää tunnistetta sisäkkäistä koodia varten:
DO $outer$
BEGIN
EXECUTE $inner$ SELECT 'embedded \'quotes\'' $inner$;
END;
$outer$;Ehdollinen DDL
Lisätkää sarake vain, jos sitä ei ole olemassa:
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name='users' AND column_name='last_login'
) THEN
ALTER TABLE users ADD COLUMN last_login TIMESTAMPTZ;
END IF;
END $$;Silmukat massasiirrossa
Päivittäkää valtava taulu erissä:
DO $$
DECLARE
rows_updated INT;
BEGIN
LOOP
UPDATE users SET tier = compute_tier(...)
WHERE id IN (
SELECT id FROM users WHERE tier IS NULL LIMIT 10000
);
GET DIAGNOSTICS rows_updated = ROW_COUNT;
EXIT WHEN rows_updated = 0;
COMMIT;
END LOOP;
END $$;Dynaaminen SQL EXECUTE-komennolla
Muodostakaa SQL-merkkijonot turvallisesti format()-funktion ja EXECUTE-komennon avulla:
DO $$
DECLARE
tbl TEXT;
BEGIN
FOR tbl IN SELECT tablename FROM pg_tables WHERE schemaname='public' LOOP
EXECUTE format('ANALYZE %I;', tbl);
END LOOP;
END $$;Transaktioiden hallinta DO-lohkon sisällä
Vanhemmissa PG-versioissa DO-lohko suoritetaan yhdessä implisiittisessä transaktiossa. PG 11 ja uudemmat sallivat COMMIT- ja ROLLBACK-komennot proseduureissa (CALL), mutta eivät DO-lohkossa. Jos migraatiot on tarpeen suorittaa erissä ja vahvistaa niiden transaktiot, käyttäkää proseduuria.
Proseduurit ja DO
- DO — anonyymi, suoritetaan kerran nykyisessä transaktiossa
- PROCEDURE — nimetty, tukee COMMIT- ja ROLLBACK-komentoja, kutsutaan CALL-komennolla
CREATE PROCEDURE migrate_users() LANGUAGE plpgsql AS $$
BEGIN
-- can COMMIT here
END $$;
CALL migrate_users();Virheenkäsittely
EXCEPTION-lohkot toimivat samalla tavalla kuin nimetyissä funktioissa:
DO $$
BEGIN
...
EXCEPTION
WHEN OTHERS THEN
RAISE NOTICE 'failed: %', SQLERRM;
END $$;Älkää käyttäkö DO-lohkoa toistuviin tehtäviin
Jos sama logiikka suoritetaan useammin kuin kerran, määritelkää funktio tai prosed uuri. DO on kertaluonteisia ajoja varten.
Käyttäkää DO-lohkoa migraatioissa
Useimmat migraatiotyökalut, kuten Flyway ja Sqitch, suorittavat tavallista SQL:ää. DO-lohkoilla voitte upottaa ohjauslogiikan ilman erillisten funktioiden luomista.
Kertaus
DO-lohkot ovat tilapäistä PL/pgSQL-koodia.
- Yksi anonyymi suoritus
- Sopivat erinomaisesti ehdolliseen DDL:ään ja migraatioihin
- Huomioikaa dollar-quoting
- Käyttäkää transaktioiden hallintaan PROCEDURE-määritystä
Pikatarkistus
Haluatte suorittaa PL/pgSQL-koodia kerran migraation aikana luomatta nimettyä funktiota. Mitä rakennetta käytätte?
Opi SQL tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 46
- Oppitunnit
- 183
Usein kysytyt kysymykset
Onko oppitunti ”DO-lohkot ja anonyymi koodi” ilmainen?
Kyllä – oppitunnin ”DO-lohkot ja anonyymi koodi” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”DO-lohkot ja anonyymi koodi”?
Suorita tilapäistä PL/pgSQL-koodia DO-lohkoilla, hallitse dollar-quotingia ja käytä DO-lohkoja kertaluonteisiin migraatioihin. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”DO-lohkot ja anonyymi koodi”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?
Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Triggerin rakenne: BEFORE/AFTER, FOR EACH ROW
- PL/pgSQL-funktioiden perusteet
- DO-lohkot ja anonyymi koodi
- Taulujen auditointi triggereillä