-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathPgsqlSql.hs
55 lines (47 loc) · 1.19 KB
/
PgsqlSql.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleContexts #-}
module PgsqlSql where
import Text.Shakespeare.Text
import Data.Text.Lazy (Text)
tableIdTrig :: Text
tableIdTrig = [lt|
CREATE OR REPLACE FUNCTION tableIdTrig()
RETURNS trigger AS
$BODY$
BEGIN
PERFORM pg_notify(TG_TABLE_NAME,NEW.my_id::TEXT);
RETURN NULL;
END
$BODY$
LANGUAGE plpgsql VOLATILE;
|]
tableChgIns :: Text
tableChgIns= [lt|
CREATE OR REPLACE FUNCTION tableChgIns()
RETURNS trigger AS
$BODY$
BEGIN
UPDATE lower_case_table SET full_name = 'cba' WHERE my_id = (SELECT my_id FROM lower_case_table ORDER BY my_id DESC LIMIT 1);
RETURN NULL;
END
$BODY$
LANGUAGE plpgsql VOLATILE;
|]
tableTrig :: Text
tableTrig = [lt|
CREATE OR REPLACE FUNCTION tableTrig()
RETURNS trigger AS
$BODY$
BEGIN
PERFORM pg_notify(TG_TABLE_NAME,TG_TABLE_NAME);
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
|]
sql :: [Text]
sql = [tableTrig, tableIdTrig, tableChgIns]