2 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
4 <!ENTITY % myents SYSTEM "entities.inc">
8 <!-- Functional Data Definition Language -->
9 <reference id="ref-fddl">
10 <title>Functional Data Definition Language (FDDL)</title>
13 &clsql; provides a functional DDL which supports the creation
14 and destruction of a variety of database objects including
15 tables, views, indexes and sequences. Functions which return
16 information about currently defined database objects are also
17 provided. In addition, the FDDL includes functionality for
18 examining table attributes and attribute types.
22 <refentry id="create-table">
24 <refentrytitle>CREATE-TABLE</refentrytitle>
27 <refname><emphasis>Function</emphasis> <emphasis role="bold">CREATE-TABLE</emphasis></refname>
28 <refpurpose>Create a database table.</refpurpose>
29 <refclass>Function</refclass>
34 <function>create-table</function> <replaceable>name</replaceable> <replaceable>description</replaceable> &key <replaceable>database</replaceable> <replaceable>constraints</replaceable> <replaceable>transactions</replaceable> => <returnvalue></returnvalue></synopsis>
37 <title>Arguments and Values</title>
40 <term><parameter>name</parameter></term>
43 The name of the table as a string, symbol or SQL expression.
48 <term><parameter>database</parameter></term>
51 A database object which defaults to
52 <symbol>*default-database*</symbol>.
57 <term><parameter>description</parameter></term>
65 <term><parameter>constraints</parameter></term>
68 A string, a list of strings or &nil;.
73 <term><parameter>transactions</parameter></term>
76 A Boolean. The default value is &t;.
83 <title>Description</title>
84 <para>Creates a table called <parameter>name</parameter>, which
85 may be a string, symbol or SQL table identifier, in
86 <parameter>database</parameter> which defaults to
87 <symbol>*default-database*</symbol>. <parameter>description</parameter>
88 is a list whose elements are lists containing the attribute
89 names, types, and other constraints such as not-null or
90 primary-key for each column in the table.
93 <parameter>constraints</parameter> is a string representing an
94 SQL table constraint expression or a list of such strings.
97 With MySQL databases, if <parameter>transactions</parameter>
98 is &t; an InnoDB table is created which supports transactions.
102 <title>Examples</title>
108 ([comments] longchar)))
110 (table-exists-p [foo])
115 <title>Side Effects</title>
117 A table is created in <parameter>database</parameter>.
121 <title>Affected by</title>
123 <symbol>*default-database*</symbol>
127 <title>Exceptional Situations</title>
129 An error is signalled if <parameter>name</parameter> is not a
130 string, symbol or SQL expression. An error of type
131 <symbol>sql-database-data-error</symbol> is signalled if a
132 relation called <parameter>name</parameter> already exists.
136 <title>See Also</title>
138 <member><link linkend="drop-table"><function>drop-table</function></link></member>
139 <member><link linkend="list-tables"><function>list-tables</function></link></member>
140 <member><link linkend="table-exists-p"><function>table-exists-p</function></link></member>
146 The <parameter>constraints</parameter> and
147 <parameter>transactions</parameter> keyword arguments to
148 <function>create-table</function> are &clsql; extensions. The
149 <parameter>transactions</parameter> keyword argument is for
150 compatibility with MySQL databases.
155 <refentry id="drop-table">
157 <refentrytitle>DROP-TABLE</refentrytitle>
160 <refname><emphasis>Function</emphasis> <emphasis role="bold">DROP-TABLE</emphasis></refname>
161 <refpurpose>Drop a database table.</refpurpose>
162 <refclass>Function</refclass>
165 <title>Syntax</title>
167 <function>drop-table</function> <replaceable>name</replaceable> &key <replaceable>if-does-not-exist</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
170 <title>Arguments and Values</title>
173 <term><parameter>name</parameter></term>
176 The name of the table as a string, symbol or SQL expression.
181 <term><parameter>database</parameter></term>
184 A database object which defaults to
185 <symbol>*default-database*</symbol>.
190 <term><parameter>if-does-not-exist</parameter></term>
193 A symbol. Meaningful values are <symbol>:ignore</symbol>
194 or <symbol>:error</symbol> (the default).
201 <title>Description</title>
202 <para>Drops the table called <parameter>name</parameter> from
203 <parameter>database</parameter> which defaults to
204 <symbol>*default-database*</symbol>. If the table does not exist
205 and <parameter>if-does-not-exist</parameter> is
206 <symbol>:ignore</symbol> then <function>drop-table</function>
207 returns &nil; whereas an error is signalled if
208 <parameter>if-does-not-exist</parameter> is
209 <symbol>:error</symbol>.
213 <title>Examples</title>
215 (table-exists-p [foo])
217 (drop-table [foo] :if-does-not-exist :ignore)
219 (table-exists-p [foo])
224 <title>Side Effects</title>
226 A table is dropped <parameter>database</parameter>.
230 <title>Affected by</title>
232 <symbol>*default-database*</symbol>
236 <title>Exceptional Situations</title>
238 An error is signalled if <parameter>name</parameter> is not a
239 string, symbol or SQL expression. An error of type
240 <symbol>sql-database-data-error</symbol> is signalled if
241 <parameter>name</parameter> doesn't exist and
242 <parameter>if-does-not-exist</parameter> has a value of
243 <symbol>:error</symbol>.
247 <title>See Also</title>
249 <member><link linkend="create-table"><function>create-table</function></link></member>
250 <member><link linkend="list-tables"><function>list-tables</function></link></member>
251 <member><link linkend="table-exists-p"><function>table-exists-p</function></link></member>
257 The <parameter>if-does-not-exist</parameter> keyword argument
258 to <function>drop-table</function> is a &clsql; extension.
263 <refentry id="list-tables">
265 <refentrytitle>LIST-TABLES</refentrytitle>
268 <refname><emphasis>Function</emphasis> <emphasis role="bold">LIST-TABLES</emphasis></refname>
269 <refpurpose>Returns a list of database tables.</refpurpose>
270 <refclass>Function</refclass>
273 <title>Syntax</title>
275 <function>list-tables</function> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
278 <title>Arguments and Values</title>
281 <term><parameter>owner</parameter></term>
284 A string, &nil; or <symbol>:all</symbol>.
289 <term><parameter>database</parameter></term>
292 A database object which defaults to
293 <symbol>*default-database*</symbol>.
298 <term><parameter>result</parameter></term>
308 <title>Description</title>
309 <para>Returns a list of strings representing table names in
310 <parameter>database</parameter> which defaults to
311 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
312 is &nil; by default which means that only tables owned by users
313 are listed. If <parameter>owner</parameter> is a string denoting
314 a user name, only tables owned by <parameter>owner</parameter>
315 are listed. If <parameter>owner</parameter> is
316 <symbol>:all</symbol> then all tables are listed.
320 <title>Examples</title>
322 (list-tables :owner "fred")
323 => ("type_table" "type_bigint" "employee" "company" "addr" "ea_join" "big")
325 (list-tables :owner :all)
326 => ("pg_description" "pg_group" "pg_proc" "pg_rewrite" "pg_type" "pg_attribute"
327 "pg_class" "pg_inherits" "pg_index" "pg_operator" "pg_opclass" "pg_am"
328 "pg_amop" "pg_amproc" "pg_language" "pg_largeobject" "pg_aggregate"
329 "pg_trigger" "pg_listener" "pg_cast" "pg_namespace" "pg_shadow"
330 "pg_conversion" "pg_depend" "pg_attrdef" "pg_constraint" "pg_database"
331 "type_table" "type_bigint" "employee" "company" "pg_statistic" "addr"
336 <title>Side Effects</title>
342 <title>Affected by</title>
344 <symbol>*default-database*</symbol>
348 <title>Exceptional Situations</title>
354 <title>See Also</title>
356 <member><link linkend="create-table"><function>create-table</function></link></member>
357 <member><link linkend="drop-table"><function>drop-table</function></link></member>
358 <member><link linkend="table-exists-p"><function>table-exists-p</function></link></member>
369 <refentry id="table-exists-p">
371 <refentrytitle>TABLE-EXISTS-P</refentrytitle>
374 <refname><emphasis>Function</emphasis> <emphasis role="bold">TABLE-EXISTS-P</emphasis></refname>
375 <refpurpose>Tests for the existence of a database table.</refpurpose>
376 <refclass>Function</refclass>
379 <title>Syntax</title>
381 <function>table-exists-p</function> <replaceable>name</replaceable> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
384 <title>Arguments and Values</title>
387 <term><parameter>name</parameter></term>
390 The name of the table as a string, symbol or SQL expression.
395 <term><parameter>owner</parameter></term>
398 A string, &nil; or <symbol>:all</symbol>.
403 <term><parameter>database</parameter></term>
406 A database object which defaults to
407 <symbol>*default-database*</symbol>.
412 <term><parameter>result</parameter></term>
422 <title>Description</title>
423 <para>Tests for the existence of an SQL table called
424 <parameter>name</parameter> in <parameter>database</parameter>
425 which defaults to <symbol>*default-database*</symbol>.
426 <parameter>owner</parameter> is &nil; by default which means
427 that only tables owned by users are examined. If
428 <parameter>owner</parameter> is a string denoting a user name,
429 only tables owned by <parameter>owner</parameter> are
430 examined. If <parameter>owner</parameter> is
431 <symbol>:all</symbol> then all tables are examined.
435 <title>Examples</title>
437 (table-exists-p [foo])
442 <title>Side Effects</title>
448 <title>Affected by</title>
450 <symbol>*default-database*</symbol>
454 <title>Exceptional Situations</title>
460 <title>See Also</title>
462 <member><link linkend="create-table"><function>create-table</function></link></member>
463 <member><link linkend="drop-table"><function>drop-table</function></link></member>
464 <member><link linkend="list-tables"><function>list-tables</function></link></member>
475 <refentry id="create-view">
477 <refentrytitle>CREATE-VIEW</refentrytitle>
480 <refname><emphasis>Function</emphasis> <emphasis role="bold">CREATE-VIEW</emphasis></refname>
481 <refpurpose>Create a database view.</refpurpose>
482 <refclass>Function</refclass>
485 <title>Syntax</title>
487 <function>create-view</function> <replaceable>name</replaceable> &key <replaceable>as</replaceable> <replaceable>column-list</replaceable> <replaceable>with-check-option</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
490 <title>Arguments and Values</title>
493 <term><parameter>name</parameter></term>
496 The name of the view as a string, symbol or SQL expression.
501 <term><parameter>database</parameter></term>
504 A database object which defaults to
505 <symbol>*default-database*</symbol>.
510 <term><parameter>as</parameter></term>
513 A symbolic SQL query expression.
518 <term><parameter>column-list</parameter></term>
526 <term><parameter>with-check-option</parameter></term>
536 <title>Description</title>
537 <para>Creates a view called <parameter>name</parameter> in
538 <parameter>database</parameter> which defaults to
539 <symbol>*default-database*</symbol>. The view is created using
540 the query <parameter>as</parameter> and the columns of the view
541 may be specified using the <parameter>column-list</parameter>
542 parameter. The <parameter>with-check-option</parameter> is &nil;
543 by default but if it has a non-&nil; value, then all
544 insert/update commands on the view are checked to ensure that
545 the new data satisfy the query <parameter>as</parameter>.
549 <title>Examples</title>
551 (create-view [lenins-group]
552 :as [select [first-name] [last-name] [email]
554 :where [= [managerid] 1]])
557 (select [*] :from [lenins-group])
558 => (("Josef" "Stalin" "stalin@soviet.org")
559 ("Leon" "Trotsky" "trotsky@soviet.org")
560 ("Nikita" "Kruschev" "kruschev@soviet.org")
561 ("Leonid" "Brezhnev" "brezhnev@soviet.org")
562 ("Yuri" "Andropov" "andropov@soviet.org")
563 ("Konstantin" "Chernenko" "chernenko@soviet.org")
564 ("Mikhail" "Gorbachev" "gorbachev@soviet.org")
565 ("Boris" "Yeltsin" "yeltsin@soviet.org")
566 ("Vladamir" "Putin" "putin@soviet.org")),
567 ("first_name" "last_name" "email")
571 <title>Side Effects</title>
573 A view is created in <parameter>database</parameter>.
577 <title>Affected by</title>
579 <symbol>*default-database*</symbol>
583 <title>Exceptional Situations</title>
585 An error is signalled if <parameter>name</parameter> is not a
586 string, symbol or SQL expression. An error of type
587 <symbol>sql-database-data-error</symbol> is signalled if a
588 relation called <parameter>name</parameter> already exists.
592 <title>See Also</title>
594 <member><link linkend="drop-view"><function>drop-view</function></link></member>
595 <member><link linkend="list-views"><function>list-views</function></link></member>
596 <member><link linkend="view-exists-p"><function>view-exists-p</function></link></member>
607 <refentry id="drop-view">
609 <refentrytitle>DROP-VIEW</refentrytitle>
612 <refname><emphasis>Function</emphasis> <emphasis role="bold">DROP-VIEW</emphasis></refname>
613 <refpurpose>Drops a database view.</refpurpose>
614 <refclass>Function</refclass>
617 <title>Syntax</title>
619 <function>drop-view</function> <replaceable>name</replaceable> &key <replaceable>if-does-not-exist</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
622 <title>Arguments and Values</title>
625 <term><parameter>name</parameter></term>
628 The name of the view as a string, symbol or SQL expression.
633 <term><parameter>database</parameter></term>
636 A database object which defaults to
637 <symbol>*default-database*</symbol>.
642 <term><parameter>if-does-not-exist</parameter></term>
645 A symbol. Meaningful values are <symbol>:ignore</symbol>
646 or <symbol>:error</symbol> (the default).
653 <title>Description</title>
654 <para>Drops the view called <parameter>name</parameter> from
655 <parameter>database</parameter> which defaults to
656 <symbol>*default-database*</symbol>. If the view does not exist
657 and <parameter>if-does-not-exist</parameter> is
658 <symbol>:ignore</symbol> then <function>drop-view</function>
659 returns &nil; whereas an error is signalled if
660 <parameter>if-does-not-exist</parameter> is
661 <symbol>:error</symbol>.
665 <title>Examples</title>
667 (view-exists-p [foo])
669 (drop-view [foo] :if-does-not-exist :ignore)
671 (view-exists-p [foo])
676 <title>Side Effects</title>
678 A view is dropped <parameter>database</parameter>.
682 <title>Affected by</title>
684 <symbol>*default-database*</symbol>
688 <title>Exceptional Situations</title>
690 An error is signalled if <parameter>name</parameter> is not a
691 string, symbol or SQL expression. An error of type
692 <symbol>sql-database-data-error</symbol> is signalled if
693 <parameter>name</parameter> doesn't exist and
694 <parameter>if-does-not-exist</parameter> has a value of
695 <symbol>:error</symbol>.
699 <title>See Also</title>
701 <member><link linkend="create-view"><function>create-view</function></link></member>
702 <member><link linkend="list-views"><function>list-views</function></link></member>
703 <member><link linkend="view-exists-p"><function>view-exists-p</function></link></member>
709 The <parameter>if-does-not-exist</parameter> keyword argument
710 to <function>drop-view</function> is a &clsql; extension.
715 <refentry id="list-views">
717 <refentrytitle>LIST-VIEWS</refentrytitle>
720 <refname><emphasis>Function</emphasis> <emphasis role="bold">LIST-VIEWS</emphasis></refname>
721 <refpurpose>Returns a list of database views.</refpurpose>
722 <refclass>Function</refclass>
725 <title>Syntax</title>
727 <function>list-views</function> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
730 <title>Arguments and Values</title>
733 <term><parameter>owner</parameter></term>
736 A string, &nil; or <symbol>:all</symbol>.
741 <term><parameter>database</parameter></term>
744 A database object which defaults to
745 <symbol>*default-database*</symbol>.
750 <term><parameter>result</parameter></term>
760 <title>Description</title>
761 <para>Returns a list of strings representing view names in
762 <parameter>database</parameter> which defaults to
763 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
764 is &nil; by default which means that only views owned by users
765 are listed. If <parameter>owner</parameter> is a string denoting
766 a user name, only views owned by <parameter>owner</parameter>
767 are listed. If <parameter>owner</parameter> is
768 <symbol>:all</symbol> then all views are listed.
772 <title>Examples</title>
774 (list-views :owner "fred")
777 (list-views :owner :all)
778 => ("pg_user" "pg_rules" "pg_views" "pg_tables" "pg_indexes" "pg_stats"
779 "pg_stat_all_tables" "pg_stat_sys_tables" "pg_stat_user_tables"
780 "pg_statio_all_tables" "pg_statio_sys_tables" "pg_statio_user_tables"
781 "pg_stat_all_indexes" "pg_stat_sys_indexes" "pg_stat_user_indexes"
782 "pg_statio_all_indexes" "pg_statio_sys_indexes" "pg_statio_user_indexes"
783 "pg_statio_all_sequences" "pg_statio_sys_sequences"
784 "pg_statio_user_sequences" "pg_stat_activity" "pg_stat_database"
785 "pg_locks" "pg_settings" "lenins_group")
789 <title>Side Effects</title>
795 <title>Affected by</title>
797 <symbol>*default-database*</symbol>
801 <title>Exceptional Situations</title>
807 <title>See Also</title>
809 <member><link linkend="create-view"><function>create-view</function></link></member>
810 <member><link linkend="drop-view"><function>drop-view</function></link></member>
811 <member><link linkend="view-exists-p"><function>view-exists-p</function></link></member>
817 <function>list-views</function> is a &clsql; extension.
822 <refentry id="view-exists-p">
824 <refentrytitle>VIEW-EXISTS-P</refentrytitle>
827 <refname><emphasis>Function</emphasis> <emphasis role="bold">VIEW-EXISTS-P</emphasis></refname>
828 <refpurpose>Tests for the existence of a database view.</refpurpose>
829 <refclass>Function</refclass>
832 <title>Syntax</title>
834 <function>view-exists-p</function> <replaceable>name</replaceable> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
837 <title>Arguments and Values</title>
840 <term><parameter>name</parameter></term>
843 The name of the view as a string, symbol or SQL expression.
848 <term><parameter>owner</parameter></term>
851 A string, &nil; or <symbol>:all</symbol>.
856 <term><parameter>database</parameter></term>
859 A database object which defaults to
860 <symbol>*default-database*</symbol>.
865 <term><parameter>result</parameter></term>
875 <title>Description</title>
876 <para>Tests for the existence of an SQL view called
877 <parameter>name</parameter> in <parameter>database</parameter>
878 which defaults to <symbol>*default-database*</symbol>.
879 <parameter>owner</parameter> is &nil; by default which means
880 that only views owned by users are examined. If
881 <parameter>owner</parameter> is a string denoting a user name,
882 only views owned by <parameter>owner</parameter> are
883 examined. If <parameter>owner</parameter> is
884 <symbol>:all</symbol> then all views are examined.
888 <title>Examples</title>
890 (view-exists-p [lenins-group])
895 <title>Side Effects</title>
901 <title>Affected by</title>
903 <symbol>*default-database*</symbol>
907 <title>Exceptional Situations</title>
913 <title>See Also</title>
915 <member><link linkend="create-view"><function>create-view</function></link></member>
916 <member><link linkend="drop-view"><function>drop-view</function></link></member>
917 <member><link linkend="list-views"><function>list-views</function></link></member>
923 <function>view-exists-p</function> is a &clsql; extension.
928 <refentry id="create-index">
930 <refentrytitle>CREATE-INDEX</refentrytitle>
933 <refname><emphasis>Function</emphasis> <emphasis role="bold">CREATE-INDEX</emphasis></refname>
934 <refpurpose>Create a database index.</refpurpose>
935 <refclass>Function</refclass>
938 <title>Syntax</title>
940 <function>create-index</function> <replaceable>name</replaceable> &key <replaceable>on</replaceable> <replaceable>unique</replaceable> <replaceable>attributes</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
943 <title>Arguments and Values</title>
946 <term><parameter>name</parameter></term>
949 The name of the index as a string, symbol or SQL expression.
954 <term><parameter>on</parameter></term>
957 The name of a table as a string, symbol or SQL expression.
962 <term><parameter>unique</parameter></term>
970 <term><parameter>attributes</parameter></term>
973 A list of attribute names.
978 <term><parameter>database</parameter></term>
981 A database object which defaults to
982 <symbol>*default-database*</symbol>.
989 <title>Description</title>
990 <para>Creates an index called <parameter>name</parameter> on the
991 table specified by <parameter>on</parameter> in
992 <parameter>database</parameter> which default to
993 <symbol>*default-database*</symbol>. The table attributes to use
994 in constructing the index <parameter>name</parameter> are
995 specified by <parameter>attributes</parameter>. The
996 <parameter>unique</parameter> argument is &nil; by default but
997 if it has a non-&nil; value then the indexed attributes must
1002 <title>Examples</title>
1004 (create-index [bar] :on [employee]
1005 :attributes '([first-name] [last-name] [email])
1009 (index-exists-p [bar])
1014 <title>Side Effects</title>
1016 An index is created in <parameter>database</parameter>.
1020 <title>Affected by</title>
1022 <symbol>*default-database*</symbol>
1026 <title>Exceptional Situations</title>
1028 An error is signalled if <parameter>name</parameter> is not a
1029 string, symbol or SQL expression. An error of type
1030 <symbol>sql-database-data-error</symbol> is signalled if a
1031 relation called <parameter>name</parameter> already exists.
1035 <title>See Also</title>
1037 <member><link linkend="drop-index"><function>drop-index</function></link></member>
1038 <member><link linkend="list-indexes"><function>list-indexes</function></link></member>
1039 <member><link linkend="index-exists-p"><function>index-exists-p</function></link></member>
1043 <title>Notes</title>
1050 <refentry id="drop-index">
1052 <refentrytitle>DROP-INDEX</refentrytitle>
1055 <refname><emphasis>Function</emphasis> <emphasis role="bold">DROP-INDEX</emphasis></refname>
1056 <refpurpose>Drop a database index.</refpurpose>
1057 <refclass>Function</refclass>
1060 <title>Syntax</title>
1062 <function>drop-index</function> <replaceable>name</replaceable> &key <replaceable>if-does-not-exist</replaceable> <replaceable>on</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
1065 <title>Arguments and Values</title>
1068 <term><parameter>name</parameter></term>
1071 The name of the index as a string, symbol or SQL expression.
1076 <term><parameter>on</parameter></term>
1079 The name of a table as a string, symbol or SQL
1085 <term><parameter>database</parameter></term>
1088 A database object which defaults to
1089 <symbol>*default-database*</symbol>.
1094 <term><parameter>if-does-not-exist</parameter></term>
1097 A symbol. Meaningful values are <symbol>:ignore</symbol>
1098 or <symbol>:error</symbol> (the default).
1105 <title>Description</title>
1106 <para>Drops the index called <parameter>name</parameter> in
1107 <parameter>database</parameter> which defaults to
1108 <symbol>*default-database*</symbol>. If the index does not exist
1109 and <parameter>if-does-not-exist</parameter> is
1110 <symbol>:ignore</symbol> then <parameter>drop-index</parameter>
1111 returns &nil; whereas an error is signalled if
1112 <parameter>if-does-not-exist</parameter> is
1113 <symbol>:error</symbol>.
1116 The argument <parameter>on</parameter> allows the optional
1117 specification of a table to drop the index from. This is
1118 required for compatability with MySQL.
1122 <title>Examples</title>
1124 (index-exists-p [foo])
1126 (drop-index [foo] :if-does-not-exist :ignore)
1128 (index-exists-p [foo])
1133 <title>Side Effects</title>
1135 An index is dropped in <parameter>database</parameter>.
1139 <title>Affected by</title>
1141 <symbol>*default-database*</symbol>
1145 <title>Exceptional Situations</title>
1147 An error is signalled if <parameter>name</parameter> is not a
1148 string, symbol or SQL expression. An error of type
1149 <symbol>sql-database-data-error</symbol> is signalled if
1150 <parameter>name</parameter> doesn't exist and
1151 <parameter>if-does-not-exist</parameter> has a value of
1152 <symbol>:error</symbol>.
1156 <title>See Also</title>
1158 <member><link linkend="create-index"><function>create-index</function></link></member>
1159 <member><link linkend="list-indexes"><function>list-indexes</function></link></member>
1160 <member><link linkend="index-exists-p"><function>index-exists-p</function></link></member>
1164 <title>Notes</title>
1166 The <parameter>if-does-not-exist</parameter> and
1167 <parameter>on</parameter> keyword arguments to
1168 <function>drop-index</function> are &clsql; extensions. The
1169 keyword argument <parameter>on</parameter> is provided for
1170 compatibility with MySQL.
1175 <refentry id="list-indexes">
1177 <refentrytitle>LIST-INDEXES</refentrytitle>
1180 <refname><emphasis>Function</emphasis> <emphasis role="bold">LIST-INDEXES</emphasis></refname>
1181 <refpurpose>Returns a list of database indexes.</refpurpose>
1182 <refclass>Function</refclass>
1185 <title>Syntax</title>
1187 <function>list-indexes</function> &key <replaceable>on</replaceable><replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
1190 <title>Arguments and Values</title>
1193 <term><parameter>owner</parameter></term>
1196 A string, &nil; or <symbol>:all</symbol>.
1201 <term><parameter>database</parameter></term>
1204 A database object which defaults to
1205 <symbol>*default-database*</symbol>.
1210 <term><parameter>on</parameter></term>
1213 The name of a table as a string, symbol or SQL
1214 expression, a list of such names or &nil;.
1219 <term><parameter>result</parameter></term>
1229 <title>Description</title>
1230 <para>Returns a list of strings representing index names in
1231 <parameter>database</parameter> which defaults to
1232 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
1233 is &nil; by default which means that only indexes owned by users
1234 are listed. If <parameter>owner</parameter> is a string denoting
1235 a user name, only indexes owned by <parameter>owner</parameter>
1236 are listed. If <parameter>owner</parameter> is
1237 <symbol>:all</symbol> then all indexes are listed.
1240 The keyword argument <parameter>on</parameter> limits the
1241 results to indexes on the specified tables. Meaningful values
1242 for <parameter>on</parameter> are &nil; (the default) which
1243 means that all tables are considered, a string, symbol or SQL
1244 expression representing a table name in
1245 <parameter>database</parameter> or a list of such table
1250 <title>Examples</title>
1253 => ("employeepk" "companypk" "addrpk" "bar")
1255 (list-indexes :on '([addr] [company]))
1256 => ("addrpk" "companypk")
1260 <title>Side Effects</title>
1266 <title>Affected by</title>
1268 <symbol>*default-database*</symbol>
1272 <title>Exceptional Situations</title>
1278 <title>See Also</title>
1280 <member><link linkend="create-index"><function>create-index</function></link></member>
1281 <member><link linkend="drop-index"><function>drop-index</function></link></member>
1282 <member><link linkend="index-exists-p"><function>index-exists-p</function></link></member>
1286 <title>Notes</title>
1288 <function>list-indexes</function> is a &clsql; extension.
1293 <refentry id="index-exists-p">
1295 <refentrytitle>INDEX-EXISTS-P</refentrytitle>
1298 <refname><emphasis>Function</emphasis> <emphasis role="bold">INDEX-EXISTS-P</emphasis></refname>
1299 <refpurpose>Tests for the existence of a database index.</refpurpose>
1300 <refclass>Function</refclass>
1303 <title>Syntax</title>
1305 <function>index-exists-p</function> <replaceable>name</replaceable> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
1308 <title>Arguments and Values</title>
1311 <term><parameter>name</parameter></term>
1314 The name of the index as a string, symbol or SQL expression.
1319 <term><parameter>owner</parameter></term>
1322 A string, &nil; or <symbol>:all</symbol>.
1327 <term><parameter>database</parameter></term>
1330 A database object which defaults to
1331 <symbol>*default-database*</symbol>.
1336 <term><parameter>result</parameter></term>
1346 <title>Description</title>
1347 <para>Tests for the existence of an SQL index called
1348 <parameter>name</parameter> in <parameter>database</parameter>
1350 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
1351 is &nil; by default which means that only indexes owned by users
1352 are examined. If <parameter>owner</parameter> is a string
1353 denoting a user name, only indexes owned by
1354 <parameter>owner</parameter> are examined. If
1355 <parameter>owner</parameter> is <symbol>:all</symbol> then all
1356 indexes are examined.
1360 <title>Examples</title>
1362 (index-exists-p [bar])
1367 <title>Side Effects</title>
1373 <title>Affected by</title>
1375 <symbol>*default-database*</symbol>
1379 <title>Exceptional Situations</title>
1385 <title>See Also</title>
1387 <member><link linkend="create-index"><function>create-index</function></link></member>
1388 <member><link linkend="drop-index"><function>drop-index</function></link></member>
1389 <member><link linkend="list-indexes"><function>list-indexes</function></link></member>
1393 <title>Notes</title>
1395 <function>index-exists-p</function> is a &clsql; extension.
1400 <refentry id="attribute-type">
1402 <refentrytitle>ATTRIBUTE-TYPE</refentrytitle>
1405 <refname><emphasis>Function</emphasis> <emphasis role="bold">ATTRIBUTE-TYPE</emphasis></refname>
1406 <refpurpose>Returns the type of the supplied attribute.</refpurpose>
1407 <refclass>Function</refclass>
1410 <title>Syntax</title>
1412 <function>attribute-type attribute</function> <replaceable>table</replaceable> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>type</returnvalue>, <returnvalue>precision</returnvalue>, <returnvalue>scale</returnvalue>, <returnvalue>nulls-accepted</returnvalue></synopsis>
1415 <title>Arguments and Values</title>
1418 <term><parameter>attribute</parameter></term>
1421 The name of the index as a string, symbol or SQL expression.
1426 <term><parameter>table</parameter></term>
1429 The name of a table as a string, symbol or SQL expression.
1434 <term><parameter>owner</parameter></term>
1437 A string, &nil; or <symbol>:all</symbol>.
1442 <term><parameter>database</parameter></term>
1445 A database object which defaults to
1446 <symbol>*default-database*</symbol>.
1451 <term><parameter>type</parameter></term>
1454 A keyword symbol denoting a vendor-specific SQL type.
1459 <term><parameter>precision</parameter></term>
1462 An integer denoting the precision of the attribute type
1468 <term><parameter>scale</parameter></term>
1471 An integer denoting the scale of the attribute type
1477 <term><parameter>nulls-accepted</parameter></term>
1487 <title>Description</title>
1488 <para>Returns a keyword symbol representing the vendor-specific
1489 field type of the supplied attribute
1490 <parameter>attribute</parameter> in the table specified by
1491 <parameter>table</parameter> in <parameter>database</parameter>
1493 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
1494 is &nil; by default which means that the attribute specified by
1495 <parameter>attribute</parameter>, if it exists, must be user
1496 owned else &nil; is returned. If <parameter>owner</parameter> is
1497 a string denoting a user name, the attribute, if it exists, must
1498 be owned by <parameter>owner</parameter> else &nil; is returned,
1499 whereas if <parameter>owner</parameter> is <symbol>:all</symbol>
1500 then the attribute, if it exists, will be returned regardless of
1504 <para>Other information is also returned. The second value is
1505 the type precision, the third is the scale and the fourth
1506 represents whether or not the attribute accepts null values (a
1507 value of 0) or not (a value of 1).
1511 <title>Examples</title>
1513 (attribute-type [emplid] [employee])
1518 <title>Side Effects</title>
1524 <title>Affected by</title>
1526 <symbol>*default-database*</symbol>
1530 <title>Exceptional Situations</title>
1536 <title>See Also</title>
1538 <member><link linkend="list-attributes"><function>list-attributes</function></link></member>
1539 <member><link linkend="list-attribute-types"><function>list-attribute-types</function></link></member>
1543 <title>Notes</title>
1550 <refentry id="list-attribute-types">
1552 <refentrytitle>LIST-ATTRIBUTE-TYPES</refentrytitle>
1555 <refname><emphasis>Function</emphasis> <emphasis role="bold">LIST-ATTRIBUTE-TYPES</emphasis></refname>
1556 <refpurpose>Returns information about the attribute types of a table.</refpurpose>
1557 <refclass>Function</refclass>
1560 <title>Syntax</title>
1562 <function>list-attribute-types</function> <replaceable>table</replaceable> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
1565 <title>Arguments and Values</title>
1568 <term><parameter>table</parameter></term>
1571 The name of a table as a string, symbol or SQL expression.
1576 <term><parameter>owner</parameter></term>
1579 A string, &nil; or <symbol>:all</symbol>.
1584 <term><parameter>database</parameter></term>
1587 A database object which defaults to
1588 <symbol>*default-database*</symbol>.
1593 <term><parameter>result</parameter></term>
1603 <title>Description</title>
1604 <para>Returns a list containing information about the SQL types
1605 of each of the attributes in the table specified by
1606 <parameter>table</parameter> in <parameter>database</parameter>
1607 which has a default value of
1608 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
1609 is &nil; by default which means that only attributes owned by
1610 users are listed. If <parameter>owner</parameter> is a string
1611 denoting a user name, only attributes owned by
1612 <parameter>owner</parameter> are listed. If
1613 <parameter>owner</parameter> is <symbol>:all</symbol> then all
1614 attributes are listed. The elements of the returned list are
1615 lists where the first element is the name of the attribute, the
1616 second element is its SQL type, the third is the type precision,
1617 the fourth is the scale of the attribute and the fifth is 1 if
1618 the attribute accepts null values and otherwise 0.
1622 <title>Examples</title>
1624 (list-attribute-types [employee])
1625 => (("emplid" :INT4 4 NIL 0) ("groupid" :INT4 4 NIL 0)
1626 ("first_name" :VARCHAR 30 NIL 1) ("last_name" :VARCHAR 30 NIL 1)
1627 ("email" :VARCHAR 100 NIL 1) ("ecompanyid" :INT4 4 NIL 1)
1628 ("managerid" :INT4 4 NIL 1) ("height" :FLOAT8 8 NIL 1)
1629 ("married" :BOOL 1 NIL 1) ("birthday" :TIMESTAMP 8 NIL 1)
1630 ("bd_utime" :INT8 8 NIL 1))
1634 <title>Side Effects</title>
1640 <title>Affected by</title>
1642 <symbol>*default-database*</symbol>
1646 <title>Exceptional Situations</title>
1652 <title>See Also</title>
1654 <member><link linkend="attribute-type"><function>attribute-type</function></link></member>
1655 <member><link linkend="list-attribute-types"><function>list-attribute-types</function></link></member>
1659 <title>Notes</title>
1666 <refentry id="list-attributes">
1668 <refentrytitle>LIST-ATTRIBUTES</refentrytitle>
1671 <refname><emphasis>Function</emphasis> <emphasis role="bold">LIST-ATTRIBUTES</emphasis></refname>
1672 <refpurpose>Returns the attributes of a table as a list.</refpurpose>
1673 <refclass>Function</refclass>
1676 <title>Syntax</title>
1678 <function>list-attributes</function> <replaceable>name</replaceable> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
1681 <title>Arguments and Values</title>
1684 <term><parameter>name</parameter></term>
1687 The name of a table as a string, symbol or SQL expression.
1692 <term><parameter>owner</parameter></term>
1695 A string, &nil; or <symbol>:all</symbol>.
1700 <term><parameter>database</parameter></term>
1703 A database object which defaults to
1704 <symbol>*default-database*</symbol>.
1709 <term><parameter>result</parameter></term>
1719 <title>Description</title>
1720 <para>Returns a list of strings representing the attributes of
1721 table <parameter>name</parameter> in
1722 <parameter>database</parameter> which defaults to
1723 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
1724 is &nil; by default which means that only attributes owned by
1725 users are listed. If <parameter>owner</parameter> is a string
1726 denoting a user name, only attributes owned by
1727 <parameter>owner</parameter> are listed. If
1728 <parameter>owner</parameter> is <symbol>:all</symbol> then all
1729 attributes are listed.
1733 <title>Examples</title>
1735 (list-attributes [employee])
1736 => ("emplid" "groupid" "first_name" "last_name" "email" "ecompanyid" "managerid"
1737 "height" "married" "birthday" "bd_utime")
1741 <title>Side Effects</title>
1747 <title>Affected by</title>
1749 <symbol>*default-database*</symbol>
1753 <title>Exceptional Situations</title>
1759 <title>See Also</title>
1761 <member><link linkend="attribute-type"><function>attribute-type</function></link></member>
1762 <member><link linkend="list-attribute-types"><function>list-attribute-types</function></link></member>
1766 <title>Notes</title>
1773 <refentry id="create-sequence">
1775 <refentrytitle>CREATE-SEQUENCE</refentrytitle>
1778 <refname><emphasis>Function</emphasis> <emphasis role="bold">CREATE-SEQUENCE</emphasis></refname>
1779 <refpurpose>Create a database sequence.</refpurpose>
1780 <refclass>Function</refclass>
1783 <title>Syntax</title>
1785 <function>create-sequence</function> <replaceable>name</replaceable> &key <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
1788 <title>Arguments and Values</title>
1791 <term><parameter>name</parameter></term>
1794 The name of the sequence as a string, symbol or SQL expression.
1799 <term><parameter>database</parameter></term>
1802 A database object which defaults to
1803 <symbol>*default-database*</symbol>.
1810 <title>Description</title>
1811 <para>Creates a sequence called <parameter>name</parameter> in
1812 <parameter>database</parameter> which defaults to
1813 <symbol>*default-database*</symbol>.
1817 <title>Examples</title>
1819 (create-sequence [foo])
1821 (sequence-exists-p [foo])
1826 <title>Side Effects</title>
1828 A sequence is created in <parameter>database</parameter>.
1832 <title>Affected by</title>
1834 <symbol>*default-database*</symbol>
1838 <title>Exceptional Situations</title>
1840 An error is signalled if <parameter>name</parameter> is not a
1841 string, symbol or SQL expression. An error of type
1842 <symbol>sql-database-data-error</symbol> is signalled if a
1843 relation called <parameter>name</parameter> already exists.
1847 <title>See Also</title>
1849 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
1850 <member><link linkend="list-sequences"><function>list-sequences</function></link></member>
1851 <member><link linkend="sequence-exists-p"><function>sequence-exists-p</function></link></member>
1852 <member><link linkend="sequence-last"><function>sequence-last</function></link></member>
1853 <member><link linkend="sequence-next"><function>sequence-next</function></link></member>
1854 <member><link linkend="set-sequence-position"><function>set-sequence-position</function></link></member>
1858 <title>Notes</title>
1860 <function>create-sequence</function> is a &clsql; extension.
1865 <refentry id="drop-sequence">
1867 <refentrytitle>DROP-SEQUENCE</refentrytitle>
1870 <refname><emphasis>Function</emphasis> <emphasis role="bold">DROP-SEQUENCE</emphasis></refname>
1871 <refpurpose>Drop a database sequence.</refpurpose>
1872 <refclass>Function</refclass>
1875 <title>Syntax</title>
1877 <function>drop-sequence</function> <replaceable>name</replaceable> &key <replaceable>if-does-not-exist</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
1880 <title>Arguments and Values</title>
1883 <term><parameter>name</parameter></term>
1886 The name of the sequence as a string, symbol or SQL expression.
1891 <term><parameter>database</parameter></term>
1894 A database object which defaults to
1895 <symbol>*default-database*</symbol>.
1900 <term><parameter>if-does-not-exist</parameter></term>
1903 A symbol. Meaningful values are <symbol>:ignore</symbol>
1904 or <symbol>:error</symbol> (the default).
1911 <title>Description</title>
1912 <para>Drops the sequence called <parameter>name</parameter> from
1913 <parameter>database</parameter> which defaults to
1914 <symbol>*default-database*</symbol>. If the sequence does not
1915 exist and <parameter>if-does-not-exist</parameter> is
1916 <symbol>:ignore</symbol> then
1917 <parameter>drop-sequence</parameter> returns &nil; whereas an
1918 error is signalled if <parameter>if-does-not-exist</parameter>
1919 is <symbol>:error</symbol>.
1923 <title>Examples</title>
1925 (sequence-exists-p [foo])
1927 (drop-sequence [foo] :if-does-not-exist :ignore)
1929 (sequence-exists-p [foo])
1934 <title>Side Effects</title>
1936 A sequence is dropped from <parameter>database</parameter>.
1940 <title>Affected by</title>
1942 <symbol>*default-database*</symbol>
1946 <title>Exceptional Situations</title>
1948 An error is signalled if <parameter>name</parameter> is not a
1949 string, symbol or SQL expression. An error of type
1950 <symbol>sql-database-data-error</symbol> is signalled if
1951 <parameter>name</parameter> doesn't exist and
1952 <parameter>if-does-not-exist</parameter> has a value of
1953 <symbol>:error</symbol>.
1957 <title>See Also</title>
1959 <member><link linkend="create-sequence"><function>create-sequence</function></link></member>
1960 <member><link linkend="list-sequences"><function>list-sequences</function></link></member>
1961 <member><link linkend="sequence-exists-p"><function>sequence-exists-p</function></link></member>
1962 <member><link linkend="sequence-last"><function>sequence-last</function></link></member>
1963 <member><link linkend="sequence-next"><function>sequence-next</function></link></member>
1964 <member><link linkend="set-sequence-position"><function>set-sequence-position</function></link></member>
1968 <title>Notes</title>
1970 <function>drop-sequence</function> is a &clsql; extension.
1975 <refentry id="list-sequences">
1977 <refentrytitle>LIST-SEQUENCES</refentrytitle>
1980 <refname><emphasis>Function</emphasis> <emphasis role="bold">LIST-SEQUENCES</emphasis></refname>
1981 <refpurpose>Returns a list of database sequences.</refpurpose>
1982 <refclass>Function</refclass>
1985 <title>Syntax</title>
1987 <function>list-sequences</function> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
1990 <title>Arguments and Values</title>
1993 <term><parameter>owner</parameter></term>
1996 A string, &nil; or <symbol>:all</symbol>.
2001 <term><parameter>database</parameter></term>
2004 A database object which defaults to
2005 <symbol>*default-database*</symbol>.
2010 <term><parameter>result</parameter></term>
2020 <title>Description</title>
2021 <para>Returns a list of strings representing sequence names in
2022 <parameter>database</parameter> which defaults to
2023 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
2024 is &nil; by default which means that only sequences owned by
2025 users are listed. If <parameter>owner</parameter> is a string
2026 denoting a user name, only sequences owned by
2027 <parameter>owner</parameter> are listed. If
2028 <parameter>owner</parameter> is <symbol>:all</symbol> then all
2029 sequences are listed.
2033 <title>Examples</title>
2040 <title>Side Effects</title>
2046 <title>Affected by</title>
2048 <symbol>*default-database*</symbol>
2052 <title>Exceptional Situations</title>
2058 <title>See Also</title>
2060 <member><link linkend="create-sequence"><function>create-sequence</function></link></member>
2061 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
2062 <member><link linkend="sequence-exists-p"><function>sequence-exists-p</function></link></member>
2063 <member><link linkend="sequence-last"><function>sequence-last</function></link></member>
2064 <member><link linkend="sequence-next"><function>sequence-next</function></link></member>
2065 <member><link linkend="set-sequence-position"><function>set-sequence-position</function></link></member>
2069 <title>Notes</title>
2071 <function>list-sequences</function> is a &clsql; extension.
2076 <refentry id="sequence-exists-p">
2078 <refentrytitle>SEQUENCE-EXISTS-P</refentrytitle>
2081 <refname><emphasis>Function</emphasis> <emphasis role="bold">SEQUENCE-EXISTS-P</emphasis></refname>
2082 <refpurpose>Tests for the existence of a database sequence.</refpurpose>
2083 <refclass>Function</refclass>
2086 <title>Syntax</title>
2088 <function>sequence-exists-p</function> <replaceable>name</replaceable> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
2091 <title>Arguments and Values</title>
2094 <term><parameter>name</parameter></term>
2097 The name of the sequence as a string, symbol or SQL expression.
2102 <term><parameter>owner</parameter></term>
2105 A string, &nil; or <symbol>:all</symbol>.
2110 <term><parameter>database</parameter></term>
2113 A database object which defaults to
2114 <symbol>*default-database*</symbol>.
2119 <term><parameter>result</parameter></term>
2129 <title>Description</title>
2130 <para>Tests for the existence of an SQL sequence called
2131 <parameter>name</parameter> in <parameter>database</parameter>
2133 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
2134 is &nil; by default which means that only sequences owned by
2135 users are examined. If <parameter>owner</parameter> is a string
2136 denoting a user name, only sequences owned by
2137 <parameter>owner</parameter> are examined. If
2138 <parameter>owner</parameter> is <symbol>:all</symbol> then all
2139 sequences are examined.
2143 <title>Examples</title>
2145 (sequence-exists-p [foo])
2150 <title>Side Effects</title>
2156 <title>Affected by</title>
2158 <symbol>*default-database*</symbol>
2162 <title>Exceptional Situations</title>
2168 <title>See Also</title>
2170 <member><link linkend="create-sequence"><function>create-sequence</function></link></member>
2171 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
2172 <member><link linkend="list-sequences"><function>list-sequences</function></link></member>
2173 <member><link linkend="sequence-last"><function>sequence-last</function></link></member>
2174 <member><link linkend="sequence-next"><function>sequence-next</function></link></member>
2175 <member><link linkend="set-sequence-position"><function>set-sequence-position</function></link></member>
2179 <title>Notes</title>
2181 <function>sequence-exists-p</function> is a &clsql; extension.
2186 <refentry id="sequence-last">
2188 <refentrytitle>SEQUENCE-LAST</refentrytitle>
2191 <refname><emphasis>Function</emphasis> <emphasis role="bold">SEQUENCE-LAST</emphasis></refname>
2192 <refpurpose>Return the last element in a database sequence.</refpurpose>
2193 <refclass>Function</refclass>
2196 <title>Syntax</title>
2198 <function>sequence-last</function> <replaceable>name</replaceable> &key <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
2201 <title>Arguments and Values</title>
2204 <term><parameter>name</parameter></term>
2207 The name of the sequence as a string, symbol or SQL expression.
2212 <term><parameter>database</parameter></term>
2215 A database object which defaults to
2216 <symbol>*default-database*</symbol>.
2221 <term><parameter>result</parameter></term>
2231 <title>Description</title>
2232 <para>Return the last value allocated in the sequence called
2233 <parameter>name</parameter> in <parameter>database</parameter>
2234 which defaults to <symbol>*default-database*</symbol>.
2238 <title>Examples</title>
2240 (sequence-last [foo])
2245 <title>Side Effects</title>
2251 <title>Affected by</title>
2253 The current value stored in database sequence
2254 <parameter>name</parameter>.
2257 <symbol>*default-database*</symbol>
2261 <title>Exceptional Situations</title>
2263 Will signal an error of type
2264 <symbol>sql-database-data-error</symbol> if a sequence called
2265 <parameter>name</parameter> does not exist in
2266 <parameter>database</parameter>.
2270 <title>See Also</title>
2272 <member><link linkend="create-sequence"><function>create-sequence</function></link></member>
2273 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
2274 <member><link linkend="list-sequences"><function>list-sequences</function></link></member>
2275 <member><link linkend="sequence-exists-p"><function>sequence-exists-p</function></link></member>
2276 <member><link linkend="sequence-next"><function>sequence-next</function></link></member>
2277 <member><link linkend="set-sequence-position"><function>set-sequence-position</function></link></member>
2281 <title>Notes</title>
2283 <function>sequence-last</function> is a &clsql; extension.
2288 <refentry id="sequence-next">
2290 <refentrytitle>SEQUENCE-NEXT</refentrytitle>
2293 <refname><emphasis>Function</emphasis> <emphasis role="bold">SEQUENCE-NEXT</emphasis></refname>
2294 <refpurpose>Increment the value of a database sequence.</refpurpose>
2295 <refclass>Function</refclass>
2298 <title>Syntax</title>
2300 <function>sequence-next</function> <replaceable>name</replaceable> &key <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
2303 <title>Arguments and Values</title>
2306 <term><parameter>name</parameter></term>
2309 The name of the sequence as a string, symbol or SQL expression.
2314 <term><parameter>database</parameter></term>
2317 A database object which defaults to
2318 <symbol>*default-database*</symbol>.
2323 <term><parameter>result</parameter></term>
2333 <title>Description</title>
2334 <para>Increment and return the value of the sequence called
2335 <parameter>name</parameter> in <parameter>database</parameter>
2336 which defaults to <symbol>*default-database*</symbol>.
2340 <title>Examples</title>
2342 (sequence-last [foo])
2344 (sequence-next [foo])
2346 (sequence-next [foo])
2348 (sequence-next [foo])
2353 <title>Side Effects</title>
2355 Modifies the value of the sequence <parameter>name</parameter>
2356 in <parameter>database</parameter>.
2360 <title>Affected by</title>
2362 The current value stored in database sequence
2363 <parameter>name</parameter>.
2366 <symbol>*default-database*</symbol>
2370 <title>Exceptional Situations</title>
2372 Will signal an error of type
2373 <symbol>sql-database-data-error</symbol> if a sequence called
2374 <parameter>name</parameter> does not exist in
2375 <parameter>database</parameter>.
2379 <title>See Also</title>
2381 <member><link linkend="create-sequence"><function>create-sequence</function></link></member>
2382 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
2383 <member><link linkend="list-sequences"><function>list-sequences</function></link></member>
2384 <member><link linkend="sequence-exists-p"><function>sequence-exists-p</function></link></member>
2385 <member><link linkend="sequence-last"><function>sequence-last</function></link></member>
2386 <member><link linkend="set-sequence-position"><function>set-sequence-position</function></link></member>
2390 <title>Notes</title>
2392 <function>sequence-next</function> is a &clsql; extension.
2397 <refentry id="set-sequence-position">
2399 <refentrytitle>SET-SEQUENCE-POSITION</refentrytitle>
2402 <refname><emphasis>Function</emphasis> <emphasis role="bold">SET-SEQUENCE-POSITION</emphasis></refname>
2403 <refpurpose>Sets the position of a database sequence.</refpurpose>
2404 <refclass>Function</refclass>
2407 <title>Syntax</title>
2409 <function>set-sequence-position</function> <replaceable>name</replaceable> <replaceable>position</replaceable> &key <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
2412 <title>Arguments and Values</title>
2415 <term><parameter>name</parameter></term>
2418 The name of the sequence as a string, symbol or SQL expression.
2423 <term><parameter>position</parameter></term>
2431 <term><parameter>database</parameter></term>
2434 A database object which defaults to
2435 <symbol>*default-database*</symbol>.
2440 <term><parameter>result</parameter></term>
2450 <title>Description</title>
2451 <para>Explicitly set the position of the sequence called
2452 <parameter>name</parameter> in <parameter>database</parameter>,
2453 which defaults to <symbol>*default-database*</symbol>, to
2454 <parameter>position</parameter> which is returned.
2458 <title>Examples</title>
2460 (sequence-last [foo])
2462 (set-sequence-position [foo] 50)
2464 (sequence-next [foo])
2469 <title>Side Effects</title>
2471 Modifies the value of the sequence <parameter>name</parameter>
2472 in <parameter>database</parameter>.
2476 <title>Affected by</title>
2478 <symbol>*default-database*</symbol>
2482 <title>Exceptional Situations</title>
2484 Will signal an error of type
2485 <symbol>sql-database-data-error</symbol> if a sequence called
2486 <parameter>name</parameter> does not exist in
2487 <parameter>database</parameter>.
2491 <title>See Also</title>
2493 <member><link linkend="create-sequence"><function>create-sequence</function></link></member>
2494 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
2495 <member><link linkend="list-sequences"><function>list-sequences</function></link></member>
2496 <member><link linkend="sequence-exists-p"><function>sequence-exists-p</function></link></member>
2497 <member><link linkend="sequence-last"><function>sequence-last</function></link></member>
2498 <member><link linkend="sequence-next"><function>sequence-next</function></link></member>
2502 <title>Notes</title>
2504 <function>set-sequence-position</function> is a &clsql; extension.
2509 <refentry id="truncate-database">
2511 <refentrytitle>TRUNCATE-DATABASE</refentrytitle>
2514 <refname><emphasis>Function</emphasis> <emphasis role="bold">TRUNCATE-DATABASE</emphasis></refname>
2515 <refpurpose>Drop all tables, views, indexes and sequences in a database.</refpurpose>
2516 <refclass>Function</refclass>
2519 <title>Syntax</title>
2521 <function>truncate-database</function> &key <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
2524 <title>Arguments and Values</title>
2527 <term><parameter>database</parameter></term>
2530 <glossterm linkend="gloss-database-object">database
2531 object</glossterm>. This will default to the value
2532 of <symbol>*default-database*</symbol>.</para>
2538 <title>Description</title>
2540 Drop all tables, views, indexes and sequences in
2541 <parameter>database</parameter> which defaults to
2542 <symbol>*default-database*</symbol>.
2546 <title>Examples</title>
2549 => ("type_table" "type_bigint" "employee" "company" "addr" "ea_join" "big")
2551 => ("employeepk" "companypk" "addrpk")
2569 <title>Side Effects</title>
2571 Modifications are made to the underlying database.
2575 <title>Affected by</title>
2581 <title>Exceptional Situations</title>
2583 Signals an error of type <symbol>sql-database-error</symbol> if
2584 <parameter>database</parameter> is not a database object.
2588 <title>See Also</title>
2591 <member><link linkend="drop-table"><function>drop-table</function></link></member>
2592 <member><link linkend="drop-view"><function>drop-view</function></link></member>
2593 <member><link linkend="drop-index"><function>drop-index</function></link></member>
2594 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
2599 <title>Notes</title>
2601 <function>truncate-database</function> is a &clsql; extension.