0
我将如何创建一个存储过程,该存储过程能够获取标记值,如(1,2,3),其中1 =插入,2 =删除,3 =更新。触发器的组合过程
因此,例如,如果标志为1,则该过程将执行插入,等等。
我知道如何创建存储过程,并已经制定和测试了我的触发器,但是我找不到任何这样的例子,并且不知道从哪里开始。
谢谢。
我将如何创建一个存储过程,该存储过程能够获取标记值,如(1,2,3),其中1 =插入,2 =删除,3 =更新。触发器的组合过程
因此,例如,如果标志为1,则该过程将执行插入,等等。
我知道如何创建存储过程,并已经制定和测试了我的触发器,但是我找不到任何这样的例子,并且不知道从哪里开始。
谢谢。
我会使用CTE和条件。
为了给你我的意思的例子:
CREATE OR REPLACE FUNCTION public.test (_flag integer) RETURNS void AS
$func$
WITH delete AS
(DELETE FROM
atable
WHERE
_flag = 1),
insert AS
(INSERT INTO
atable (acolumn)
SELECT
'Hello World'
WHERE
_flag = 2)
UPDATE
atable
SET
acolumn = 'Hello World'
WHERE
_flag = 3;
$func$
LANGUAGE sql COST 100 STRICT;
你会发现每个语句都有自己的标志检查的条件。
您可以使用正常的,如果else语句:
CREATE PROCEDURE <ProcedureName> (@Flag int)
AS
BEGIN
IF(@Flag = 1)--INSERT
BEGIN
<Insert statement>
END
ELSE IF(@Flag = 2) --DELETE
BEGIN
<Delete statement>
END
ELSE IF (@Flag = 3) --UPDATE
BEGIN
<Update statement>
END
END
GO
提示:'if'看起来这将是有益的。 –
我会为每个插入,删除和更新创建三个不同的存储过程。你会在例如C,C#的Java中创建一个传统的函数来完成这三个操作吗?我知道我不会! [关注分离](https://en.wikipedia.org/wiki/Separation_of_concerns)! –