Re: [SQL] showing the DEFAULT of a field
От | Stoyan Genov |
---|---|
Тема | Re: [SQL] showing the DEFAULT of a field |
Дата | |
Msg-id | 199911061201.OAA00714@lorna.digsys.bg обсуждение исходный текст |
Ответ на | showing the DEFAULT of a field (Klaus Woelfel <woelfel@mayn.de>) |
Список | pgsql-sql |
Hi. Please look carefully at the sequence of commands: shell#>createdb tmp shell#>psql tmp Welcome to the POSTGRESQL interactive sql monitor: Please read the file COPYRIGHT for copyright terms of POSTGRESQL [PostgreSQL 6.5.2 on i386-pc-bsdi4.0.1, compiled by gcc 2.7.2.1] type \? for help on slash commands type \q to quit type \g or terminate with semicolon to execute queryYou are currentlyconnected to the database: tmp tmp=> \d Couldn't find any tables, sequences or indices! tmp=> create table test (i int4 primary key, j int4 default 1, t text not null); NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'test_pkey' for table 'test' CREATE tmp=> \d Database = tmp+------------------+----------------------------------+----------+| Owner | Relation | Type |+------------------+----------------------------------+----------+| genov | test | table || genov | test_pkey | index |+------------------+----------------------------------+----------+ tmp=> \d test Table = test +----------------------------------+----------------------------------+----- --+ | Field | Type | Length| +----------------------------------+----------------------------------+----- --+ | i | int4 not null | 4 | | j | int4 default 1 | 4 | | t | text not null | var | +----------------------------------+----------------------------------+----- --+ Index: test_pkey tmp=> \q shell#>pg_dump tmp \connect - genov CREATE TABLE "test" ( "i" int4 NOT NULL, "j" int4 DEFAULT 1, "t" text NOT NULL); COPY "test" FROM stdin; \. CREATE UNIQUE INDEX "test_pkey" on "test" using btree ( "i" "int4_ops" ); shell#> So, I hope you see how restrictions upon fields are expressed and created. The probably confusing stuff is about the primary key. Primary keys are const- ructed using unique indices upon the fields you say "primary key" about during the creation of a table. These unique indices will not allow a duplicate value in the field, which is, technically speaking, the primary goal of a primary key field. Watch this: tmp=> insert into test (i) values (1); ERROR: ExecAppend: Fail to add null value in not null attribute t tmp=> insert into test (i,t) values (1,'a line'); INSERT 31375 1 tmp=> insert into test (i,t) values (1,'another line'); ERROR: Cannot insert a duplicate key into a unique index tmp=> \q This is it. If something is unclear, do write back. Stoyan Genov
В списке pgsql-sql по дате отправления: