I am learning triggers in PostgreSQL.
I have created a trigger function update_name()
:
CREATE OR REPLACE FUNCTION update_name()
RETURNS trigger AS
$BODY$
BEGIN
NEW.name := "ankit";
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION update_name()
OWNER TO postgres;
My table user_table
is:
CREATE TABLE user_table (
name character varying(20) NOT NULL,
password character varying(20),
email character varying(20),
gender character varying(20),
phone bigint,
CONSTRAINT user_table_pkey PRIMARY KEY (name)
);
and the trigger for the table is :
CREATE TRIGGER "change-name"
BEFORE INSERT OR UPDATE
ON user_table
FOR EACH ROW
EXECUTE PROCEDURE update_name();
when I am inserting data to my table using query:
INSERT INTO user_table(name, password, email, gender, phone)
VALUES ('aa', '9874', 'poi@ka.in', 'male', 8978987896);
I've got the error:
ERROR: column "ankit" does not exist
LINE 1: SELECT "ankit"
^
QUERY: SELECT "ankit"
CONTEXT: PL/pgSQL function update_name() line 3 at assignment
********** Error **********
ERROR: column "ankit" does not exist
SQL state: 42703
Context: PL/pgSQL function update_name() line 3 at assignment
What am I doing wrong?