sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgresql infoga trigger för att ställa in värde

Du har rätt att du behöver en utlösare, eftersom det inte fungerar för dig att ställa in ett standardvärde för kolumnen - standardvärden fungerar bara för null värden och hjälper dig inte att förhindra tomma värden.

I postgres finns det ett par steg för att skapa en trigger:

Steg 1:Skapa en funktion som returnerar typen 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

Steg 2:Skapa en utlösare som aktiveras före infoga, som låter dig ändra värden innan de infogas, som anropar ovanstående funktion:

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

Och du är klar.

Se ovanstående kod som körs på SQLFIddle som visar att den fungerar korrekt!

Du nämner i en kommentar att värdet 'X' hämtas från en underfråga. Om så är fallet, ändra den relevanta raden så att något i stil med:

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


  1. Hur DENSE_RANK() fungerar i SQL Server

  2. Hitta partitioneringskolumnen för en partitionerad tabell i SQL Server (T-SQL)

  3. Anslut ODBC-applikationer på Windows till Zoho CRM

  4. Postgres och index på främmande nycklar och primärnycklar