pomoc z postgresql
Blasko Marek
Blasko na vuje.sk
Úterý Únor 20 10:32:58 CET 2001
zdravym!
Ak existuje konfera (cz/sk) kde mi helfnu tak povedzte kde.
ale kedze ja o ziadnej neviem tak otravym vas:
mam preniest veci z M$SQL do PostgeSQL zatial som vsetko sprabvil len my
ostaly triggery :(
original v MS SQL:
--------------------------------------------
CREATE TRIGGER trdyu ON dbo.dyndata
FOR UPDATE
AS
IF UPDATE (okam_hodn) OR UPDATE (okam_stav)
BEGIN
UPDATE dyndata
SET casmer = GETDATE()
FROM dyndata dy, inserted ins
WHERE dy.mslink = ins.mslink
END
GO
-------------------------------------------
moj pokus ktori nejde :( : (v dokumentacii som nasiel
sposob jak sa to robi cez 'c' ale ja potrebujem SQL
-------------------------------------------
CREATE FUNCTION getdate() RETURNS datetime
AS 'SELECT CURRENT_TIMESTAMP AS RESULT'
LANGUAGE 'sql';
CREATE FUNCTION uptime_dyn(int) returns int4
AS 'UPDATE dyndata SET casmer = getdate()
FROM dyndata dy
WHERE dy.mslink= $1; '
LANGUAGE 'sql';
CREATE TRIGGER trdyu AFTER UPDATE ON dyndata FOR EACH ROW
EXECUTE PROCEDURE uptime_dyn(mslink);
--------------------------------------------
a potom este tento ale ten som zatial neskusal:
--------------------------------------------
CREATE TRIGGER trmru ON dbo.dddozim
FOR UPDATE
AS
IF UPDATE (value)
BEGIN
UPDATE dddozim
SET casmer = GETDATE()
FROM dddozim mr, inserted ins
WHERE mr.mslink = ins.mslink
UPDATE dddozim
SET casmer = GETDATE(), flag =
CASE (SELECT MAX(mr1.flag)
FROM dddozim mr1
WHERE mr1.mslink IN (601, 602, 603, 604))
WHEN 0 THEN 2
WHEN 1 THEN 2
WHEN 2 THEN 2
ELSE 3
END
FROM dddozim mr
WHERE mr.mslink = 1002
UPDATE dddozim
SET casmer = GETDATE(), flag =
CASE (SELECT MAX(mr1.flag)
FROM dddozim mr1
WHERE mr1.mslink IN (606, 607, 608, 609))
WHEN 0 THEN 2
WHEN 1 THEN 2
WHEN 2 THEN 2
ELSE 3
END
FROM dddozim mr
WHERE mr.mslink = 1003
UPDATE dddozim
SET casmer = GETDATE(), flag =
CASE (SELECT MAX(mr1.flag)
FROM dddozim mr1
WHERE mr1.mslink IN (611, 612))
WHEN 0 THEN 2
WHEN 1 THEN 2
WHEN 2 THEN 2
ELSE 3
END
FROM dddozim mr
WHERE mr.mslink = 1004
UPDATE dddozim
SET casmer = GETDATE(), flag =
CASE (SELECT MAX(mr1.flag)
FROM dddozim mr1
WHERE mr1.mslink IN (616, 617))
WHEN 0 THEN 2
WHEN 1 THEN 2
WHEN 2 THEN 2
ELSE 3
END
FROM dddozim mr
WHERE mr.mslink = 1005
UPDATE dddozim
SET casmer = GETDATE(), flag =
CASE (SELECT MAX(mr1.flag)
FROM dddozim mr1
WHERE mr1.mslink IN (1002, 1003, 1004, 1005))
WHEN 2 THEN 2
ELSE 3
END
FROM dddozim mr
WHERE mr.mslink = 1001
END
GO
---------------------------------------
Za pripadnu pomoc dakujem!
--
Blasko @vuje.sk
k
Marek s
e a (( \|/ ))
r l |
a Blasko |
Marek |
+------++ /_\
|OM2AMB |----|/_\|
+-------+ / \ / \
Další informace o konferenci Linux