Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我想在表中插入一行,但触发器不起作用_Sql_Postgresql - Fatal编程技术网

Sql 我想在表中插入一行,但触发器不起作用

Sql 我想在表中插入一行,但触发器不起作用,sql,postgresql,Sql,Postgresql,我想先在相关表中插入一行,然后再在第一个表中插入一行 CREATE FUNCTION madre_insert_trigger() RETURNS TRIGGER AS $$ BEGIN INSERT INTO curso_madre(nivel,curso) VALUES('9','9'); EXECUTE 'INSERT INTO madre' || ' VALUES ($1.*)' USING NEW; RETURN NULL; END; $$ LANGUAGE plpgsql;

我想先在相关表中插入一行,然后再在第一个表中插入一行

CREATE FUNCTION madre_insert_trigger() RETURNS TRIGGER AS $$
BEGIN

INSERT INTO curso_madre(nivel,curso)
VALUES('9','9'); 
EXECUTE 'INSERT INTO madre' || ' VALUES ($1.*)' USING NEW;

RETURN NULL;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER trigg_madre_insert BEFORE INSERT ON madre FOR EACH ROW EXECUTE PROCEDURE madre_insert_trigger();
表“madre”:


由于触发器在之前运行,因此它必须返回非NULL结果,因为NULL表示
,请不要在第一个表中插入任何内容

更改为
返回新代码

因为触发器在之前运行
-它必须返回非NULL结果,因为NULL表示
,请不要在第一个表中插入任何内容

更改为
返回新代码

也不要发出insert语句。。如果您发出插入,您将得到一个从不循环的插入。触发器中的insert将导致触发器触发,这反过来又会导致触发器触发,这….@Belayer正在插入另一个表中,而不是触发器触发的表。因此,除非另一个表有一个插入到原始表中的触发器,否则没有问题。将curso_madre误读为just madre。也不要发出insert语句。。如果您发出插入,您将得到一个从不循环的插入。触发器中的insert将导致触发器触发,这反过来又会导致触发器触发,这….@Belayer正在插入另一个表中,而不是触发器触发的表。因此,除非另一个表有一个插入到原始表中的触发器,否则没有问题。把玛德雷错读成玛德雷。
CREATE TABLE PUBLIC.Madre(
id_Madre SERIAL,
fk_idcmadre SERIAL,
EDAD INTEGER,
ESTADO_CIVIL INTEGER,
NACIONALIDAD CHAR,
ACTIVIDAD INTEGER,
OCUPACION VARCHAR(50),
CATEGORIA INTEGER,
**CONSTRAINT pk_Madre PRIMARY KEY (id_Madre),
CONSTRAINT fk_idcmadre FOREIGN KEY (fk_idcmadre) REFERENCES PUBLIC.Curso_Madre (id_Curso)**
);