您的位置:首页 > 数据库

PostgreSQL数据库添加更新只用一个函数insertupdate

2010-12-07 15:52 603 查看
--建表
CREATE TABLE user_friend
(
uf_id serial NOT NULL,
uf_userid integer NOT NULL,
uf_friendlist character varying(1000),
uf_created timestamp without time zone DEFAULT now(),
uf_count integer,
uf_listname character varying(1000),
CONSTRAINT pk_user_friend PRIMARY KEY (uf_id)
);
--新建一个函数,用于用户添加和插入数据
CREATE OR REPLACE FUNCTION add_friend(userid INT, friend_userid INT, friend_name character varying) RETURNS INT AS
$$
BEGIN
LOOP
-- first try to update the key
UPDATE user_friend set uf_friendlist = replace(uf_friendlist, ','||friend_userid||',', ',')||friend_userid||',', uf_listname = replace(uf_listname, ','||friend_name||',', ',')||friend_name||',',uf_count = length(uf_friendlist) - length(REPLACE(uf_friendlist, ',', '')) - 1 where uf_userid=userid;
IF found THEN
RETURN 1;
END IF;

BEGIN
INSERT INTO user_friend(uf_userid,uf_friendlist,uf_count,uf_listname) VALUES (userid, ','||friend_userid||',',1,','||friend_name||',');
RETURN 2;
EXCEPTION WHEN unique_violation THEN
RETURN 0;
-- do nothing, and loop to try the UPDATE again
END;
END LOOP;
END;
$$
LANGUAGE plpgsql;

--添加
select add_friend(1,1,'wangbin1');
select add_friend(1,2,'wangbin2');
select add_friend(2,1,'wangbin1');
select add_friend(2,2,'wangbin2');
select add_friend(3,1,'wangbin1');
select add_friend(3,2,'wangbin2');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐