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