Return-Path: owner-postman
Received: from localhost.Berkeley.EDU (localhost.Berkeley.EDU [127.0.0.1]) by nobozo.CS.Berkeley.EDU (8.6.9/8.6.3) with SMTP id SAA20023 for postgres-redist; Sat, 14 Jan 1995 18:41:27 -0800
Resent-From: POSTGRES mailing list <postman@postgres.Berkeley.EDU>
Resent-Message-Id: <199501150241.SAA20023@nobozo.CS.Berkeley.EDU>
Sender: owner-postman@postgres.Berkeley.EDU
X-Return-Path: owner-postman
Received: from faerie.CS.Berkeley.EDU (faerie.CS.Berkeley.EDU [128.32.37.53]) by nobozo.CS.Berkeley.EDU (8.6.9/8.6.3) with ESMTP id SAA20013 for <postgres@postgres.Berkeley.EDU>; Sat, 14 Jan 1995 18:41:26 -0800
Received: from localhost.Berkeley.EDU (localhost.Berkeley.EDU [127.0.0.1]) by faerie.CS.Berkeley.EDU (8.6.9/8.1B) with SMTP id SAA11289; Sat, 14 Jan 1995 18:41:09 -0800
Message-Id: <199501150241.SAA11289@faerie.CS.Berkeley.EDU>
X-Authentication-Warning: faerie.CS.Berkeley.EDU: Host localhost.Berkeley.EDU didn't use HELO protocol
From: aoki@cs.berkeley.edu (Paul M. Aoki)
To: slillo@sisa.cl (Sebastian Lillo N.)
Cc: postgres@postgres.Berkeley.EDU
Reply-To: aoki@cs.berkeley.edu (Paul M. Aoki)
Subject: Re: Key not implemented
Date: Sat, 14 Jan 95 18:41:03 -0800
X-Sender: aoki@postgres.Berkeley.EDU
Resent-To: postgres-redist@postgres.Berkeley.EDU
X-Mts: smtp
Resent-Date: Sat, 14 Jan 95 18:41:27 -0800
Resent-XMts: smtp

------- Forwarded Message

 From:  jpv@gavdos.pr.net.CH (Jean-Paul Vetterli)
 To:  postgres@postgres.Berkeley.EDU
 Subject:  Re: Managing key-value pairs
 Date:  Mon, 22 Nov 93 09:35:31 +0100

 > From: dunkel@spin.chem.utah.edu (Reinhard Dunkel)
 > Message-Id: <9311220311.AA21809@spin.chem.utah.edu>
 > 
 > [...]
 > I am trying to use Postgres 4.1 (RS/6000-370, AIX 3.2.4) to manage
 > key-value pairs for a graphical user interface. I am embarrassed to
 > admit that I have problems to make this easiest of all database
 > applications work smoothly. I would greatly appreciate any help on the
 > following problems:
 > 
 > PROBLEM 1: I have to enforce that my "param" attribute values (keys)
 > are unique in a database relation.  However, the command "create foo
 > (param=char16, value=text) key (param)\g" is documented in the
 > reference manual but the message "WARN:Nov 21 18:10:13:RelationCreate:
 > KEY not yet supported" sounds discouraging. So before writing a
 > key-value pair I query the database to see if the key is known and
 > then either replace or append the tupel.  This approach takes two
 > database accesses (one second overhead with libpq each). Is there a
 > better way to do this?
 > [...]
 
 One approach to enforce uniqueness is to use rules. 
 Example: 
 
 ---- cut here ----
 #  this is a spog script: %spog -f <thisfile>
 #  it is idempotent 
 #
 #  create key-value table:
 create kv (k = char16,\
 	v = text)
 #
 #  uniqueness *and* integrity:
 define rule kv_r is \
 	on append to kv \
 	where kv.k = new.k or new.k ISNULL \
 	do instead nothing
 #
 #  data:
 append kv (k = "K1", v = "K1's value")
 append kv (k = "K2", v = "K2's value")
 append kv (k = "K3", v = "K3's value")
 append kv (k = "K4", v = "K4's value")
 append kv (k = "K5", v = "etc.")
 ---- cut here ----
 
 I hope this can help.
 
 
 Jean-Paul Vetterli 		
 Route des Pommiers 19		email:	jpv@gavdos.pr.net.CH 		
 CH-1723 Marly			phone:	++77 34 38 27 		
 Switzerland			fax:	++37 46 53 09 

------- End of Forwarded Message
--
  Paul M. Aoki          |  University of California at Berkeley
  aoki@CS.Berkeley.EDU  |  Dept. of EECS, Computer Science Division (#1776) 
                        |  Berkeley, CA 94720-1776

==============================================================================
   To add/remove yourself to/from the POSTGRES mailing list: send mail with 
   the subject line ADD or DEL to "postgres-request@postgres.Berkeley.EDU".
   If this fails, send mail to "post_questions@postgres.Berkeley.EDU" and
   a human will deal with it.  DO NOT post to the "postgres" mailing list.
==============================================================================
              URL: http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/
