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)! –