sql >> Databáze >  >> RDS >> PostgreSQL

Postgresql vloží spoušť na nastavenou hodnotu

Máte pravdu, že potřebujete spouštěč, protože nastavení výchozí hodnoty pro sloupec vám nebude fungovat – výchozí hodnoty fungují pouze pro null hodnoty a nepomohou vám zabránit prázdným hodnotám.

V postgresu existuje několik kroků k vytvoření spouštěče:

Krok 1:Vytvořte funkci, která vrací typ trigger :

CREATE FUNCTION my_trigger_function()
RETURNS trigger AS $$
BEGIN
  IF NEW.C1 IS NULL OR NEW.C1 = '' THEN
    NEW.C1 := 'X';
  END IF;
  RETURN NEW;
END;
$$ LANGUAGE plpgsql

Krok 2:Vytvořte spouštěč, který se spustí před insert, který umožňuje měnit hodnoty před jejich vložením, což vyvolá výše uvedenou funkci:

CREATE TRIGGER my_trigger
BEFORE INSERT ON T
FOR EACH ROW
EXECUTE PROCEDURE my_trigger_function()

A máte hotovo.

Podívejte se na výše uvedený kód spouštěný na SQLFIddle, který ukazuje, že funguje správně!

V komentáři uvádíte, že hodnota 'X' je načteno z poddotazu. Pokud ano, změňte příslušný řádek takto:

NEW.C1 := (select some_column from some_table where some_condition);


  1. Oracle Převod sekund na hodiny:minuty:sekundy

  2. Úvod do OPENJSON s příklady (SQL Server)

  3. MyBatis RowBounds neomezuje výsledky dotazů

  4. Zkontrolujte omezení v SQL