Re: Oracle to PGSQL -- need help
| От | Masaru Sugawara | 
|---|---|
| Тема | Re: Oracle to PGSQL -- need help | 
| Дата | |
| Msg-id | 20020727012218.335E.RK73@sea.plala.or.jp обсуждение исходный текст  | 
		
| Ответ на | Re: Oracle to PGSQL -- need help (Masaru Sugawara <rk73@sea.plala.or.jp>) | 
| Список | pgsql-general | 
On Fri, 26 Jul 2002 22:54:23 +0900
I <rk73@sea.plala.or.jp> wrote:
> >> Given an insert request, I want the trigger to find out which # is used on
> >> the left, and then randomly select one of the resultant rows and insert the
> >> randomly picked row's PKEY value along with the original insertion info.
> >> into a third table.
Probably, I would think this problem can be solved by means of the way
like the following steps.
-- in 7.2.1
CREATE TABLE third (q int4, jobid int4, name text, age int4);
CREATE VIEW v_third AS
    SELECT 0::int4 AS q, name, age
      FROM  third;
CREATE OR REPLACE FUNCTION fn_get_jobid(int4) RETURNS int4 AS '
DECLARE
   x ALIAS FOR $1;
   rec RECORD;
BEGIN
   CREATE TEMP SEQUENCE seq_n;
   SELECT INTO rec xl.jobid
     FROM (SELECT xl0.*,
                  nextval(''seq_n'') - 1  AS i,
                  (SELECT count(*)
                     FROM xeroxlogentries
                    WHERE q = x
                  ) AS n
            FROM (SELECT *, (SELECT setval(''seq_n'',1))
                    FROM xeroxlogentries
                   WHERE q = x
                  ) AS xl0
             LIMIT ALL
           ) AS xl
     WHERE xl.i = ceil( (SELECT random()) * xl.n);
  DROP SEQUENCE seq_n;
  RETURN rec.jobid;
END;
' LANGUAGE 'plpgsql';
CREATE RULE r_v_third AS
   ON INSERT TO v_third
   DO INSTEAD
      INSERT INTO third VALUES (NEW.q,
                                fn_get_jobid(NEW.q),
                                NEW.name,
                                NEW.age);
-- insert requests
INSERT INTO v_third VALUES (1, 'Mike', 20);
INSERT INTO v_third VALUES (1, 'Jack', 25);
INSERT INTO v_third VALUES (1, 'John', 15);
INSERT INTO v_third VALUES (1, 'Mary', 20);
                    .
                    .
                    .
                    .
Regards,
Masaru Sugawara
		
	В списке pgsql-general по дате отправления: