Re: Feature request for postgresSQL

Started by Bruce Momjianabout 23 years ago2 messagesgeneral
Jump to latest
#1Bruce Momjian
bruce@momjian.us

I am CC'ing the general list with this feature request.

You could easily write a new data type like those in /contrib for this
functionality. You are the first to ask for this feature.

---------------------------------------------------------------------------

Tim Hawkins wrote:

I'm not sure this the correct mechanism for requesting a feature.

I would like to see the introduction of a GUID datatype which stores a
standard 16byte DCE UUID, plus a function for creating UUID's for
initialisation.

We use GUID's exclusively instead of sequences in all of our system
implementations as they allow records to be moved freely between
database servers,

Don't not suffer from loss of sequence position, and can be generated
without any need for each process to be critically locked. We currently
have to simulate

Them using an application function and a 32 char field on databases like
postgreSQL that do not support them directly.

Support for this datatype would greatly assist those of us moving from
SQL Server, and add a valuable function to postgreSQL itself.

From the sql server 2000 docs

Creates a unique value of type uniqueidentifier.

Syntax

NEWID ( )

Return Types

uniqueidentifier

Examples

A. Use the NEWID function with a variable

This example uses NEWID to assign a value to a variable declared as the
uniqueidentifier data type. The value of the uniqueidentifier data type
variable is printed before the value is tested.

-- Creating a local variable with DECLARE/SET syntax.
DECLARE @myid uniqueidentifier
SET @myid = NEWID()
PRINT 'Value of @myid is: '+ CONVERT(varchar(255), @myid)

Here is the result set:

Value of @myid is: 6F9619FF-8B86-D011-B42D-00C04FC964FF

Note The value returned by NEWID is different for each computer. This
number is shown only for illustration.

B. Use NEWID in a CREATE TABLE statement

This example creates cust table with a uniqueidentifier data type, and
uses NEWID to fill the table with a default value. In assigning the
default value of NEWID(), each new and existing row has a unique value
for the cust_id column.

-- Creating a table using NEWID for uniqueidentifier data type.
CREATE TABLE cust
(
cust_id uniqueidentifier NOT NULL
DEFAULT newid(),
company varchar(30) NOT NULL,
contact_name varchar(60) NOT NULL,
address varchar(30) NOT NULL,
city varchar(30) NOT NULL,
state_province varchar(10) NULL,
postal_code varchar(10) NOT NULL,
country varchar(20) NOT NULL,
telephone varchar(15) NOT NULL,
fax varchar(15) NULL
)
GO
-- Inserting data into cust table.
INSERT cust
(cust_id, company, contact_name, address, city, state_province,
postal_code, country, telephone, fax)
VALUES
(newid(), 'Wartian Herkku', 'Pirkko Koskitalo', 'Torikatu 38', 'Oulu',
NULL,
'90110', 'Finland', '981-443655', '981-443655')
INSERT cust
(cust_id, company, contact_name, address, city, state_province,
postal_code, country, telephone, fax)
VALUES
(newid(), 'Wellington Importadora', 'Paula Parente', 'Rua do Mercado,
12', 'Resende', 'SP',
'08737-363', 'Brazil', '(14) 555-8122', '')
INSERT cust
(cust_id, company, contact_name, address, city, state_province,
postal_code, country, telephone, fax)
VALUES
(newid(), 'Cactus Comidas para Ilevar', 'Patricio Simpson', 'Cerrito
333', 'Buenos Aires', NULL,
'1010', 'Argentina', '(1) 135-5555', '(1) 135-4892')
INSERT cust
(cust_id, company, contact_name, address, city, state_province,
postal_code, country, telephone, fax)
VALUES
(newid(), 'Ernst Handel', 'Roland Mendel', 'Kirchgasse 6', 'Graz', NULL,
'8010', 'Austria', '7675-3425', '7675-3426')
INSERT cust
(cust_id, company, contact_name, address, city, state_province,
postal_code, country, telephone, fax)
VALUES
(newid(), 'Maison Dewey', 'Catherine Dewey', 'Rue Joseph-Bens 532',
'Bruxelles', NULL,
'B-1180', 'Belgium', '(02) 201 24 67', '(02) 201 24 68')
GO

C. Use uniqueidentifier and variable assignment

This example declares a local variable called @myid as a variable of
uniqueidentifier data type. Then, the variable is assigned a value using
the SET statement.

DECLARE @myid uniqueidentifier
SET @myid = 'A972C577-DFB0-064E-1189-0154C99310DAAC12'
GO

[ image/gif is not supported, skipping... ]

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#2Joe Conway
mail@joeconway.com
In reply to: Bruce Momjian (#1)

Bruce Momjian wrote:

I am CC'ing the general list with this feature request.

You could easily write a new data type like those in /contrib for this
functionality. You are the first to ask for this feature.

---------------------------------------------------------------------------

Tim Hawkins wrote:

I'm not sure this the correct mechanism for requesting a feature.

I would like to see the introduction of a GUID datatype which stores a
standard 16byte DCE UUID, plus a function for creating UUID's for
initialisation.

See:
http://gborg.postgresql.org/project/uniqueidentifier/projdisplay.php

HTH,

Joe