将行从一个 table 复制到另一个?
Copying row from one table to another?
我有这三个 table 服务,executed_services 和评级 table,它对服务进行评级。我的评级 table 有一个指向 executed_services 的外键,因此,我想 "copy" 将服务评级为 executed_services 关系。我尝试使用以下过程,但是这个 select 不起作用,因为它必须 return 只有一个结果。
BEGIN
INSERT INTO servico_executado (id, data_abertura, id_solicitacao, id_profissional)
VALUES (SELECT id, data_abertura, id_solicitacao, id_profissional FROM servico WHERE id = NEW.id_servico);
DELETE FROM servico WHERE id = NEW.id_servico;
RETURN NEW;
END;
那么,我应该怎么做才能从一个 table 中获取所有值并插入另一个?或者还有其他方法吗?
INSERT INTO servico_executado
SELECT id, data_abertura, id_solicitacao, id_profissional
FROM servico WHERE id = NEW.id_servico;
不要使用'VALUES'。如果 table 中有更多列,则可以在 select 语句中为那些缺失的列使用 null。
您可以通过以下简单查询 CTE 一步轻松完成:
WITH deleted AS (DELETE FROM servico WHERE id = RETURNING *)
INSERT INTO servico_executado (id, data_abertura, id_solicitacao, id_profissional)
SELECT id, data_abertura, id_solicitacao, id_profissional FROM deleted
RETURNING *;
不需要使用PL/pgSQL。移动的服务的 id
在上述查询中由占位符
表示。
我有这三个 table 服务,executed_services 和评级 table,它对服务进行评级。我的评级 table 有一个指向 executed_services 的外键,因此,我想 "copy" 将服务评级为 executed_services 关系。我尝试使用以下过程,但是这个 select 不起作用,因为它必须 return 只有一个结果。
BEGIN
INSERT INTO servico_executado (id, data_abertura, id_solicitacao, id_profissional)
VALUES (SELECT id, data_abertura, id_solicitacao, id_profissional FROM servico WHERE id = NEW.id_servico);
DELETE FROM servico WHERE id = NEW.id_servico;
RETURN NEW;
END;
那么,我应该怎么做才能从一个 table 中获取所有值并插入另一个?或者还有其他方法吗?
INSERT INTO servico_executado
SELECT id, data_abertura, id_solicitacao, id_profissional
FROM servico WHERE id = NEW.id_servico;
不要使用'VALUES'。如果 table 中有更多列,则可以在 select 语句中为那些缺失的列使用 null。
您可以通过以下简单查询 CTE 一步轻松完成:
WITH deleted AS (DELETE FROM servico WHERE id = RETURNING *)
INSERT INTO servico_executado (id, data_abertura, id_solicitacao, id_profissional)
SELECT id, data_abertura, id_solicitacao, id_profissional FROM deleted
RETURNING *;
不需要使用PL/pgSQL。移动的服务的 id
在上述查询中由占位符 表示。