create_table.l
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:5k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. ." This is -*-nroff-*-
  2. ." XXX standard disclaimer belongs here....
  3. ." $Header: /usr/local/cvsroot/pgsql/src/man/Attic/create_table.l,v 1.23 1999/02/02 03:45:32 momjian Exp $
  4. .TH "CREATE TABLE" SQL 09/25/97 PostgreSQL
  5. .SH NAME
  6. create table - create a new class
  7. .SH SYNOPSIS
  8. .nf
  9. fBcreatefR [fBtempfR] fBtablefR classname
  10.   fB(fP
  11. attname type
  12. [fBdefaultfP value]
  13. [[fBnot nullfP] [fBuniquefP] | [fBprimary keyfP]]
  14. [fBreferencesfP classname fB(fP attname fB)fP]
  15. [fBcheck (fP conditionfB )fP]
  16. [fB,fP attname type [constraint] [fB,fP ...] ]
  17. [fB, primary key ( fPattname, attname[,...] fB)fP]
  18. [fB, unique ( fPattname, attname[,...] fB)fP]
  19. [fB, foreign key ( fPattname, attname[,...] fB) referencesfP classname]
  20. [fB,fP [fBconstraintfR cname] fBcheckfR fB(fR test fB)fR [, fBcheckfR fB(fR test fB)fR ] ]
  21.   fB)fP
  22.   [fBinheritsfR fB(fR classname [fB,fR classname] fB)fR]
  23. .fi
  24. .SH DESCRIPTION
  25. .BR "Create Table"
  26. will enter a new class into the current data base.  The class will be
  27. *(lqowned*(rq by the user issuing the command.  The name of the
  28. class is
  29. .IR classname
  30. and the attributes are as specified in the list of
  31. .IR attname s.
  32. Each attribute is created with the type specified by
  33. .IR type "."
  34. Each type may be a simple type, a complex type (set) or an array type.
  35. Each attribute may be specified to be non-null and
  36. each may have a default value, specified by the
  37. .IR default
  38. clause which is the keyword "default" followed by a constant or expression.
  39. .PP
  40. Each array attribute stores arrays that must have the same number of
  41. dimensions but may have different sizes and array index bounds.  An
  42. array of dimension
  43. .IR n
  44. is specified by appending 
  45. .IR n
  46. pairs of square brackets:
  47. .nf
  48. att_name type[][]..[]
  49. .fi
  50. N.B. As of Postgres version 6.0, consistant array dimensions within an
  51. attribute are not enforced. This will likely change in a future release.
  52. .PP
  53. The optional
  54. .BR inherits
  55. clause specifies a collection of class names from which this class
  56. automatically inherits all fields.  If any inherited field name
  57. appears more than once, Postgres reports an error.  Postgres automatically
  58. allows the created class to inherit functions on classes above it in
  59. the inheritance hierarchy.  Inheritance of functions is done according
  60. to the conventions of the Common Lisp Object System (CLOS).
  61. .PP
  62. Each new class
  63. .IR classname 
  64. is automatically created as a type.  Therefore, one or more instances
  65. from the class are automatically a type and can be used in 
  66. .IR alter_table(l)
  67. or other 
  68. .BR create_table(l)
  69. statements.
  70. .PP
  71. The optional
  72. .BR constraint
  73. clauses specify constraints or tests which new or updated entries
  74. must satisfy for an insert or update operation to succeed. Each constraint
  75. must evaluate to a boolean expression. Multiple attributes may be referenced within
  76. a single constraint.  The use of fBprimary key (fPattname[fB,fP...]fB)fP
  77. as a table constraint
  78. is mutually incompatible with fBprimary keyfP used as a column constraint.
  79. .PP
  80. The new class is created as a heap with no initial data.  A class can
  81. have no more than 1600 attributes (realistically, this is limited by the
  82. fact that tuple sizes must be less than 8192 bytes), but this limit
  83. may be configured lower at some sites.  A class cannot have the same
  84. name as a system catalog class.
  85. .PP
  86. .SH EXAMPLES
  87. .nf
  88. --
  89. -- Create class emp with attributes name, sal and bdate
  90. --
  91. create table emp (name name, salary float4, bdate abstime)
  92. .fi
  93. .nf
  94. --
  95. --Create class permemp with pension information that
  96. --inherits all fields of emp 
  97. --
  98. create table permemp (plan name) inherits (emp)
  99. .fi
  100. .nf
  101. --
  102. --Create class emppay with attributes name and wage with
  103. --a default salary and constraints on wage range
  104. --
  105. create table emppay (name text not null, wage float4 default 10.00
  106. constraint empcon check (wage > 5.30 and wage <= 30.00), check (name <> ''))
  107. .fi
  108. .nf
  109. --
  110. --Create class tictactoe to store noughts-and-crosses
  111. --boards as a 2-dimensional array
  112. --
  113. create table tictactoe (game int4, board char[][])
  114. .fi
  115. .nf
  116. --
  117. --Create a class newemp with a set attribute "manager".  A
  118. --set (complex) attribute may be of the same type as the
  119. --relation being defined (as here) or of a different complex
  120. --type.  The type must exist in the "pg_type" catalog or be
  121. --the one currently being defined.
  122. --
  123. create table newemp (name text, manager newemp)
  124. .fi
  125. .nf
  126. --
  127. --Create a table using SQL92 syntax
  128. create table component
  129. (
  130.         assembly        char(8)         not null
  131.                                         references job (id),
  132.         product         char(8)         not null
  133.                                         references product (id),
  134.         sorting         int,
  135.         qty             int check (qty >= 0),
  136.         primary key (assembly, product),
  137.         unique (assembly, product, sorting),
  138.         constraint not_same check (assembly != product)
  139. )
  140. .fi
  141. .PP
  142. .SH BUGS
  143. The fBforeign keyfP and fBreferencesfP keywords are parsed but not yet
  144. implemented in PostgreSQL 6.3.1.
  145. .SH "SEE ALSO"
  146. drop_table(l).