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>CREATE-TABLE</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])
113 (create-table [foo] '(([bar] integer :not-null :unique :primary-key)
114 ([baz] string :not-null :unique)))
116 (table-exists-p [foo])
119 (create-table [foo] '(([bar] integer :not-null) ([baz] string :not-null))
120 :constraints '("UNIQUE (bar,baz)" "PRIMARY KEY (bar)"))
122 (table-exists-p [foo])
127 <title>Side Effects</title>
129 A table is created in <parameter>database</parameter>.
133 <title>Affected by</title>
135 <symbol>*default-database*</symbol>
139 <title>Exceptional Situations</title>
141 An error is signalled if <parameter>name</parameter> is not a
142 string, symbol or SQL expression. An error of type
143 <symbol>sql-database-data-error</symbol> is signalled if a
144 relation called <parameter>name</parameter> already exists.
148 <title>See Also</title>
150 <member><link linkend="drop-table"><function>drop-table</function></link></member>
151 <member><link linkend="list-tables"><function>list-tables</function></link></member>
152 <member><link linkend="table-exists-p"><function>table-exists-p</function></link></member>
158 The <parameter>constraints</parameter> and
159 <parameter>transactions</parameter> keyword arguments to
160 <function>create-table</function> are &clsql; extensions. The
161 <parameter>transactions</parameter> keyword argument is for
162 compatibility with MySQL databases.
167 <refentry id="drop-table">
169 <refentrytitle>DROP-TABLE</refentrytitle>
172 <refname>DROP-TABLE</refname>
173 <refpurpose>Drop a database table.</refpurpose>
174 <refclass>Function</refclass>
177 <title>Syntax</title>
179 <function>drop-table</function> <replaceable>name</replaceable> &key <replaceable>if-does-not-exist</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
182 <title>Arguments and Values</title>
185 <term><parameter>name</parameter></term>
188 The name of the table as a string, symbol or SQL expression.
193 <term><parameter>database</parameter></term>
196 A database object which defaults to
197 <symbol>*default-database*</symbol>.
202 <term><parameter>if-does-not-exist</parameter></term>
205 A symbol. Meaningful values are <symbol>:ignore</symbol>
206 or <symbol>:error</symbol> (the default).
213 <title>Description</title>
214 <para>Drops the table called <parameter>name</parameter> from
215 <parameter>database</parameter> which defaults to
216 <symbol>*default-database*</symbol>. If the table does not exist
217 and <parameter>if-does-not-exist</parameter> is
218 <symbol>:ignore</symbol> then <function>drop-table</function>
219 returns &nil; whereas an error is signalled if
220 <parameter>if-does-not-exist</parameter> is
221 <symbol>:error</symbol>.
225 <title>Examples</title>
227 (table-exists-p [foo])
229 (drop-table [foo] :if-does-not-exist :ignore)
231 (table-exists-p [foo])
236 <title>Side Effects</title>
238 A table is dropped <parameter>database</parameter>.
242 <title>Affected by</title>
244 <symbol>*default-database*</symbol>
248 <title>Exceptional Situations</title>
250 An error is signalled if <parameter>name</parameter> is not a
251 string, symbol or SQL expression. An error of type
252 <symbol>sql-database-data-error</symbol> is signalled if
253 <parameter>name</parameter> doesn't exist and
254 <parameter>if-does-not-exist</parameter> has a value of
255 <symbol>:error</symbol>.
259 <title>See Also</title>
261 <member><link linkend="create-table"><function>create-table</function></link></member>
262 <member><link linkend="list-tables"><function>list-tables</function></link></member>
263 <member><link linkend="table-exists-p"><function>table-exists-p</function></link></member>
269 The <parameter>if-does-not-exist</parameter> keyword argument
270 to <function>drop-table</function> is a &clsql; extension.
275 <refentry id="list-tables">
277 <refentrytitle>LIST-TABLES</refentrytitle>
280 <refname>LIST-TABLES</refname>
281 <refpurpose>Returns a list of database tables.</refpurpose>
282 <refclass>Function</refclass>
285 <title>Syntax</title>
287 <function>list-tables</function> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
290 <title>Arguments and Values</title>
293 <term><parameter>owner</parameter></term>
296 A string, &nil; or <symbol>:all</symbol>.
301 <term><parameter>database</parameter></term>
304 A database object which defaults to
305 <symbol>*default-database*</symbol>.
310 <term><parameter>result</parameter></term>
320 <title>Description</title>
321 <para>Returns a list of strings representing table names in
322 <parameter>database</parameter> which defaults to
323 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
324 is &nil; by default which means that only tables owned by users
325 are listed. If <parameter>owner</parameter> is a string denoting
326 a user name, only tables owned by <parameter>owner</parameter>
327 are listed. If <parameter>owner</parameter> is
328 <symbol>:all</symbol> then all tables are listed.
332 <title>Examples</title>
334 (list-tables :owner "fred")
335 => ("type_table" "type_bigint" "employee" "company" "addr" "ea_join" "big")
337 (list-tables :owner :all)
338 => ("pg_description" "pg_group" "pg_proc" "pg_rewrite" "pg_type" "pg_attribute"
339 "pg_class" "pg_inherits" "pg_index" "pg_operator" "pg_opclass" "pg_am"
340 "pg_amop" "pg_amproc" "pg_language" "pg_largeobject" "pg_aggregate"
341 "pg_trigger" "pg_listener" "pg_cast" "pg_namespace" "pg_shadow"
342 "pg_conversion" "pg_depend" "pg_attrdef" "pg_constraint" "pg_database"
343 "type_table" "type_bigint" "employee" "company" "pg_statistic" "addr"
348 <title>Side Effects</title>
354 <title>Affected by</title>
356 <symbol>*default-database*</symbol>
360 <title>Exceptional Situations</title>
366 <title>See Also</title>
368 <member><link linkend="create-table"><function>create-table</function></link></member>
369 <member><link linkend="drop-table"><function>drop-table</function></link></member>
370 <member><link linkend="table-exists-p"><function>table-exists-p</function></link></member>
381 <refentry id="table-exists-p">
383 <refentrytitle>TABLE-EXISTS-P</refentrytitle>
386 <refname>TABLE-EXISTS-P</refname>
387 <refpurpose>Tests for the existence of a database table.</refpurpose>
388 <refclass>Function</refclass>
391 <title>Syntax</title>
393 <function>table-exists-p</function> <replaceable>name</replaceable> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
396 <title>Arguments and Values</title>
399 <term><parameter>name</parameter></term>
402 The name of the table as a string, symbol or SQL expression.
407 <term><parameter>owner</parameter></term>
410 A string, &nil; or <symbol>:all</symbol>.
415 <term><parameter>database</parameter></term>
418 A database object which defaults to
419 <symbol>*default-database*</symbol>.
424 <term><parameter>result</parameter></term>
434 <title>Description</title>
435 <para>Tests for the existence of an SQL table called
436 <parameter>name</parameter> in <parameter>database</parameter>
437 which defaults to <symbol>*default-database*</symbol>.
438 <parameter>owner</parameter> is &nil; by default which means
439 that only tables owned by users are examined. If
440 <parameter>owner</parameter> is a string denoting a user name,
441 only tables owned by <parameter>owner</parameter> are
442 examined. If <parameter>owner</parameter> is
443 <symbol>:all</symbol> then all tables are examined.
447 <title>Examples</title>
449 (table-exists-p [foo])
454 <title>Side Effects</title>
460 <title>Affected by</title>
462 <symbol>*default-database*</symbol>
466 <title>Exceptional Situations</title>
472 <title>See Also</title>
474 <member><link linkend="create-table"><function>create-table</function></link></member>
475 <member><link linkend="drop-table"><function>drop-table</function></link></member>
476 <member><link linkend="list-tables"><function>list-tables</function></link></member>
487 <refentry id="create-view">
489 <refentrytitle>CREATE-VIEW</refentrytitle>
492 <refname>CREATE-VIEW</refname>
493 <refpurpose>Create a database view.</refpurpose>
494 <refclass>Function</refclass>
497 <title>Syntax</title>
499 <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>
502 <title>Arguments and Values</title>
505 <term><parameter>name</parameter></term>
508 The name of the view as a string, symbol or SQL expression.
513 <term><parameter>database</parameter></term>
516 A database object which defaults to
517 <symbol>*default-database*</symbol>.
522 <term><parameter>as</parameter></term>
525 A symbolic SQL query expression.
530 <term><parameter>column-list</parameter></term>
538 <term><parameter>with-check-option</parameter></term>
548 <title>Description</title>
549 <para>Creates a view called <parameter>name</parameter> in
550 <parameter>database</parameter> which defaults to
551 <symbol>*default-database*</symbol>. The view is created using
552 the query <parameter>as</parameter> and the columns of the view
553 may be specified using the <parameter>column-list</parameter>
554 parameter. The <parameter>with-check-option</parameter> is &nil;
555 by default but if it has a non-&nil; value, then all
556 insert/update commands on the view are checked to ensure that
557 the new data satisfy the query <parameter>as</parameter>.
561 <title>Examples</title>
563 (create-view [lenins-group]
564 :as [select [first-name] [last-name] [email]
566 :where [= [managerid] 1]])
569 (select [*] :from [lenins-group])
570 => (("Josef" "Stalin" "stalin@soviet.org")
571 ("Leon" "Trotsky" "trotsky@soviet.org")
572 ("Nikita" "Kruschev" "kruschev@soviet.org")
573 ("Leonid" "Brezhnev" "brezhnev@soviet.org")
574 ("Yuri" "Andropov" "andropov@soviet.org")
575 ("Konstantin" "Chernenko" "chernenko@soviet.org")
576 ("Mikhail" "Gorbachev" "gorbachev@soviet.org")
577 ("Boris" "Yeltsin" "yeltsin@soviet.org")
578 ("Vladamir" "Putin" "putin@soviet.org")),
579 ("first_name" "last_name" "email")
583 <title>Side Effects</title>
585 A view is created in <parameter>database</parameter>.
589 <title>Affected by</title>
591 <symbol>*default-database*</symbol>
595 <title>Exceptional Situations</title>
597 An error is signalled if <parameter>name</parameter> is not a
598 string, symbol or SQL expression. An error of type
599 <symbol>sql-database-data-error</symbol> is signalled if a
600 relation called <parameter>name</parameter> already exists.
604 <title>See Also</title>
606 <member><link linkend="drop-view"><function>drop-view</function></link></member>
607 <member><link linkend="list-views"><function>list-views</function></link></member>
608 <member><link linkend="view-exists-p"><function>view-exists-p</function></link></member>
619 <refentry id="drop-view">
621 <refentrytitle>DROP-VIEW</refentrytitle>
624 <refname>DROP-VIEW</refname>
625 <refpurpose>Drops a database view.</refpurpose>
626 <refclass>Function</refclass>
629 <title>Syntax</title>
631 <function>drop-view</function> <replaceable>name</replaceable> &key <replaceable>if-does-not-exist</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
634 <title>Arguments and Values</title>
637 <term><parameter>name</parameter></term>
640 The name of the view as a string, symbol or SQL expression.
645 <term><parameter>database</parameter></term>
648 A database object which defaults to
649 <symbol>*default-database*</symbol>.
654 <term><parameter>if-does-not-exist</parameter></term>
657 A symbol. Meaningful values are <symbol>:ignore</symbol>
658 or <symbol>:error</symbol> (the default).
665 <title>Description</title>
666 <para>Drops the view called <parameter>name</parameter> from
667 <parameter>database</parameter> which defaults to
668 <symbol>*default-database*</symbol>. If the view does not exist
669 and <parameter>if-does-not-exist</parameter> is
670 <symbol>:ignore</symbol> then <function>drop-view</function>
671 returns &nil; whereas an error is signalled if
672 <parameter>if-does-not-exist</parameter> is
673 <symbol>:error</symbol>.
677 <title>Examples</title>
679 (view-exists-p [foo])
681 (drop-view [foo] :if-does-not-exist :ignore)
683 (view-exists-p [foo])
688 <title>Side Effects</title>
690 A view is dropped <parameter>database</parameter>.
694 <title>Affected by</title>
696 <symbol>*default-database*</symbol>
700 <title>Exceptional Situations</title>
702 An error is signalled if <parameter>name</parameter> is not a
703 string, symbol or SQL expression. An error of type
704 <symbol>sql-database-data-error</symbol> is signalled if
705 <parameter>name</parameter> doesn't exist and
706 <parameter>if-does-not-exist</parameter> has a value of
707 <symbol>:error</symbol>.
711 <title>See Also</title>
713 <member><link linkend="create-view"><function>create-view</function></link></member>
714 <member><link linkend="list-views"><function>list-views</function></link></member>
715 <member><link linkend="view-exists-p"><function>view-exists-p</function></link></member>
721 The <parameter>if-does-not-exist</parameter> keyword argument
722 to <function>drop-view</function> is a &clsql; extension.
727 <refentry id="list-views">
729 <refentrytitle>LIST-VIEWS</refentrytitle>
732 <refname>LIST-VIEWS</refname>
733 <refpurpose>Returns a list of database views.</refpurpose>
734 <refclass>Function</refclass>
737 <title>Syntax</title>
739 <function>list-views</function> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
742 <title>Arguments and Values</title>
745 <term><parameter>owner</parameter></term>
748 A string, &nil; or <symbol>:all</symbol>.
753 <term><parameter>database</parameter></term>
756 A database object which defaults to
757 <symbol>*default-database*</symbol>.
762 <term><parameter>result</parameter></term>
772 <title>Description</title>
773 <para>Returns a list of strings representing view names in
774 <parameter>database</parameter> which defaults to
775 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
776 is &nil; by default which means that only views owned by users
777 are listed. If <parameter>owner</parameter> is a string denoting
778 a user name, only views owned by <parameter>owner</parameter>
779 are listed. If <parameter>owner</parameter> is
780 <symbol>:all</symbol> then all views are listed.
784 <title>Examples</title>
786 (list-views :owner "fred")
789 (list-views :owner :all)
790 => ("pg_user" "pg_rules" "pg_views" "pg_tables" "pg_indexes" "pg_stats"
791 "pg_stat_all_tables" "pg_stat_sys_tables" "pg_stat_user_tables"
792 "pg_statio_all_tables" "pg_statio_sys_tables" "pg_statio_user_tables"
793 "pg_stat_all_indexes" "pg_stat_sys_indexes" "pg_stat_user_indexes"
794 "pg_statio_all_indexes" "pg_statio_sys_indexes" "pg_statio_user_indexes"
795 "pg_statio_all_sequences" "pg_statio_sys_sequences"
796 "pg_statio_user_sequences" "pg_stat_activity" "pg_stat_database"
797 "pg_locks" "pg_settings" "lenins_group")
801 <title>Side Effects</title>
807 <title>Affected by</title>
809 <symbol>*default-database*</symbol>
813 <title>Exceptional Situations</title>
819 <title>See Also</title>
821 <member><link linkend="create-view"><function>create-view</function></link></member>
822 <member><link linkend="drop-view"><function>drop-view</function></link></member>
823 <member><link linkend="view-exists-p"><function>view-exists-p</function></link></member>
829 <function>list-views</function> is a &clsql; extension.
834 <refentry id="view-exists-p">
836 <refentrytitle>VIEW-EXISTS-P</refentrytitle>
839 <refname>VIEW-EXISTS-P</refname>
840 <refpurpose>Tests for the existence of a database view.</refpurpose>
841 <refclass>Function</refclass>
844 <title>Syntax</title>
846 <function>view-exists-p</function> <replaceable>name</replaceable> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
849 <title>Arguments and Values</title>
852 <term><parameter>name</parameter></term>
855 The name of the view as a string, symbol or SQL expression.
860 <term><parameter>owner</parameter></term>
863 A string, &nil; or <symbol>:all</symbol>.
868 <term><parameter>database</parameter></term>
871 A database object which defaults to
872 <symbol>*default-database*</symbol>.
877 <term><parameter>result</parameter></term>
887 <title>Description</title>
888 <para>Tests for the existence of an SQL view called
889 <parameter>name</parameter> in <parameter>database</parameter>
890 which defaults to <symbol>*default-database*</symbol>.
891 <parameter>owner</parameter> is &nil; by default which means
892 that only views owned by users are examined. If
893 <parameter>owner</parameter> is a string denoting a user name,
894 only views owned by <parameter>owner</parameter> are
895 examined. If <parameter>owner</parameter> is
896 <symbol>:all</symbol> then all views are examined.
900 <title>Examples</title>
902 (view-exists-p [lenins-group])
907 <title>Side Effects</title>
913 <title>Affected by</title>
915 <symbol>*default-database*</symbol>
919 <title>Exceptional Situations</title>
925 <title>See Also</title>
927 <member><link linkend="create-view"><function>create-view</function></link></member>
928 <member><link linkend="drop-view"><function>drop-view</function></link></member>
929 <member><link linkend="list-views"><function>list-views</function></link></member>
935 <function>view-exists-p</function> is a &clsql; extension.
940 <refentry id="create-index">
942 <refentrytitle>CREATE-INDEX</refentrytitle>
945 <refname>CREATE-INDEX</refname>
946 <refpurpose>Create a database index.</refpurpose>
947 <refclass>Function</refclass>
950 <title>Syntax</title>
952 <function>create-index</function> <replaceable>name</replaceable> &key <replaceable>on</replaceable> <replaceable>unique</replaceable> <replaceable>attributes</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
955 <title>Arguments and Values</title>
958 <term><parameter>name</parameter></term>
961 The name of the index as a string, symbol or SQL expression.
966 <term><parameter>on</parameter></term>
969 The name of a table as a string, symbol or SQL expression.
974 <term><parameter>unique</parameter></term>
982 <term><parameter>attributes</parameter></term>
985 A list of attribute names.
990 <term><parameter>database</parameter></term>
993 A database object which defaults to
994 <symbol>*default-database*</symbol>.
1001 <title>Description</title>
1002 <para>Creates an index called <parameter>name</parameter> on the
1003 table specified by <parameter>on</parameter> in
1004 <parameter>database</parameter> which default to
1005 <symbol>*default-database*</symbol>. The table attributes to use
1006 in constructing the index <parameter>name</parameter> are
1007 specified by <parameter>attributes</parameter>. The
1008 <parameter>unique</parameter> argument is &nil; by default but
1009 if it has a non-&nil; value then the indexed attributes must
1014 <title>Examples</title>
1016 (create-index [bar] :on [employee]
1017 :attributes '([first-name] [last-name] [email])
1021 (index-exists-p [bar])
1026 <title>Side Effects</title>
1028 An index is created in <parameter>database</parameter>.
1032 <title>Affected by</title>
1034 <symbol>*default-database*</symbol>
1038 <title>Exceptional Situations</title>
1040 An error is signalled if <parameter>name</parameter> is not a
1041 string, symbol or SQL expression. An error of type
1042 <symbol>sql-database-data-error</symbol> is signalled if a
1043 relation called <parameter>name</parameter> already exists.
1047 <title>See Also</title>
1049 <member><link linkend="drop-index"><function>drop-index</function></link></member>
1050 <member><link linkend="list-indexes"><function>list-indexes</function></link></member>
1051 <member><link linkend="index-exists-p"><function>index-exists-p</function></link></member>
1055 <title>Notes</title>
1062 <refentry id="drop-index">
1064 <refentrytitle>DROP-INDEX</refentrytitle>
1067 <refname>DROP-INDEX</refname>
1068 <refpurpose>Drop a database index.</refpurpose>
1069 <refclass>Function</refclass>
1072 <title>Syntax</title>
1074 <function>drop-index</function> <replaceable>name</replaceable> &key <replaceable>if-does-not-exist</replaceable> <replaceable>on</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
1077 <title>Arguments and Values</title>
1080 <term><parameter>name</parameter></term>
1083 The name of the index as a string, symbol or SQL expression.
1088 <term><parameter>on</parameter></term>
1091 The name of a table as a string, symbol or SQL
1097 <term><parameter>database</parameter></term>
1100 A database object which defaults to
1101 <symbol>*default-database*</symbol>.
1106 <term><parameter>if-does-not-exist</parameter></term>
1109 A symbol. Meaningful values are <symbol>:ignore</symbol>
1110 or <symbol>:error</symbol> (the default).
1117 <title>Description</title>
1118 <para>Drops the index called <parameter>name</parameter> in
1119 <parameter>database</parameter> which defaults to
1120 <symbol>*default-database*</symbol>. If the index does not exist
1121 and <parameter>if-does-not-exist</parameter> is
1122 <symbol>:ignore</symbol> then <parameter>drop-index</parameter>
1123 returns &nil; whereas an error is signalled if
1124 <parameter>if-does-not-exist</parameter> is
1125 <symbol>:error</symbol>.
1128 The argument <parameter>on</parameter> allows the optional
1129 specification of a table to drop the index from. This is
1130 required for compatability with MySQL.
1134 <title>Examples</title>
1136 (index-exists-p [foo])
1138 (drop-index [foo] :if-does-not-exist :ignore)
1140 (index-exists-p [foo])
1145 <title>Side Effects</title>
1147 An index is dropped in <parameter>database</parameter>.
1151 <title>Affected by</title>
1153 <symbol>*default-database*</symbol>
1157 <title>Exceptional Situations</title>
1159 An error is signalled if <parameter>name</parameter> is not a
1160 string, symbol or SQL expression. An error of type
1161 <symbol>sql-database-data-error</symbol> is signalled if
1162 <parameter>name</parameter> doesn't exist and
1163 <parameter>if-does-not-exist</parameter> has a value of
1164 <symbol>:error</symbol>.
1168 <title>See Also</title>
1170 <member><link linkend="create-index"><function>create-index</function></link></member>
1171 <member><link linkend="list-indexes"><function>list-indexes</function></link></member>
1172 <member><link linkend="index-exists-p"><function>index-exists-p</function></link></member>
1176 <title>Notes</title>
1178 The <parameter>if-does-not-exist</parameter> and
1179 <parameter>on</parameter> keyword arguments to
1180 <function>drop-index</function> are &clsql; extensions. The
1181 keyword argument <parameter>on</parameter> is provided for
1182 compatibility with MySQL.
1187 <refentry id="list-indexes">
1189 <refentrytitle>LIST-INDEXES</refentrytitle>
1192 <refname>LIST-INDEXES</refname>
1193 <refpurpose>Returns a list of database indexes.</refpurpose>
1194 <refclass>Function</refclass>
1197 <title>Syntax</title>
1199 <function>list-indexes</function> &key <replaceable>on</replaceable><replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
1202 <title>Arguments and Values</title>
1205 <term><parameter>owner</parameter></term>
1208 A string, &nil; or <symbol>:all</symbol>.
1213 <term><parameter>database</parameter></term>
1216 A database object which defaults to
1217 <symbol>*default-database*</symbol>.
1222 <term><parameter>on</parameter></term>
1225 The name of a table as a string, symbol or SQL
1226 expression, a list of such names or &nil;.
1231 <term><parameter>result</parameter></term>
1241 <title>Description</title>
1242 <para>Returns a list of strings representing index names in
1243 <parameter>database</parameter> which defaults to
1244 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
1245 is &nil; by default which means that only indexes owned by users
1246 are listed. If <parameter>owner</parameter> is a string denoting
1247 a user name, only indexes owned by <parameter>owner</parameter>
1248 are listed. If <parameter>owner</parameter> is
1249 <symbol>:all</symbol> then all indexes are listed.
1252 The keyword argument <parameter>on</parameter> limits the
1253 results to indexes on the specified tables. Meaningful values
1254 for <parameter>on</parameter> are &nil; (the default) which
1255 means that all tables are considered, a string, symbol or SQL
1256 expression representing a table name in
1257 <parameter>database</parameter> or a list of such table
1262 <title>Examples</title>
1265 => ("employeepk" "companypk" "addrpk" "bar")
1267 (list-indexes :on '([addr] [company]))
1268 => ("addrpk" "companypk")
1272 <title>Side Effects</title>
1278 <title>Affected by</title>
1280 <symbol>*default-database*</symbol>
1284 <title>Exceptional Situations</title>
1290 <title>See Also</title>
1292 <member><link linkend="create-index"><function>create-index</function></link></member>
1293 <member><link linkend="drop-index"><function>drop-index</function></link></member>
1294 <member><link linkend="index-exists-p"><function>index-exists-p</function></link></member>
1298 <title>Notes</title>
1300 <function>list-indexes</function> is a &clsql; extension.
1305 <refentry id="index-exists-p">
1307 <refentrytitle>INDEX-EXISTS-P</refentrytitle>
1310 <refname>INDEX-EXISTS-</refname>
1311 <refpurpose>Tests for the existence of a database index.</refpurpose>
1312 <refclass>Function</refclass>
1315 <title>Syntax</title>
1317 <function>index-exists-p</function> <replaceable>name</replaceable> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
1320 <title>Arguments and Values</title>
1323 <term><parameter>name</parameter></term>
1326 The name of the index as a string, symbol or SQL expression.
1331 <term><parameter>owner</parameter></term>
1334 A string, &nil; or <symbol>:all</symbol>.
1339 <term><parameter>database</parameter></term>
1342 A database object which defaults to
1343 <symbol>*default-database*</symbol>.
1348 <term><parameter>result</parameter></term>
1358 <title>Description</title>
1359 <para>Tests for the existence of an SQL index called
1360 <parameter>name</parameter> in <parameter>database</parameter>
1362 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
1363 is &nil; by default which means that only indexes owned by users
1364 are examined. If <parameter>owner</parameter> is a string
1365 denoting a user name, only indexes owned by
1366 <parameter>owner</parameter> are examined. If
1367 <parameter>owner</parameter> is <symbol>:all</symbol> then all
1368 indexes are examined.
1372 <title>Examples</title>
1374 (index-exists-p [bar])
1379 <title>Side Effects</title>
1385 <title>Affected by</title>
1387 <symbol>*default-database*</symbol>
1391 <title>Exceptional Situations</title>
1397 <title>See Also</title>
1399 <member><link linkend="create-index"><function>create-index</function></link></member>
1400 <member><link linkend="drop-index"><function>drop-index</function></link></member>
1401 <member><link linkend="list-indexes"><function>list-indexes</function></link></member>
1405 <title>Notes</title>
1407 <function>index-exists-p</function> is a &clsql; extension.
1412 <refentry id="attribute-type">
1414 <refentrytitle>ATTRIBUTE-TYPE</refentrytitle>
1417 <refname>ATTRIBUTE-TYPE</refname>
1418 <refpurpose>Returns the type of the supplied attribute.</refpurpose>
1419 <refclass>Function</refclass>
1422 <title>Syntax</title>
1424 <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>
1427 <title>Arguments and Values</title>
1430 <term><parameter>attribute</parameter></term>
1433 The name of the index as a string, symbol or SQL expression.
1438 <term><parameter>table</parameter></term>
1441 The name of a table as a string, symbol or SQL expression.
1446 <term><parameter>owner</parameter></term>
1449 A string, &nil; or <symbol>:all</symbol>.
1454 <term><parameter>database</parameter></term>
1457 A database object which defaults to
1458 <symbol>*default-database*</symbol>.
1463 <term><parameter>type</parameter></term>
1466 A keyword symbol denoting a vendor-specific SQL type.
1471 <term><parameter>precision</parameter></term>
1474 An integer denoting the precision of the attribute type
1480 <term><parameter>scale</parameter></term>
1483 An integer denoting the scale of the attribute type
1489 <term><parameter>nulls-accepted</parameter></term>
1499 <title>Description</title>
1500 <para>Returns a keyword symbol representing the vendor-specific
1501 field type of the supplied attribute
1502 <parameter>attribute</parameter> in the table specified by
1503 <parameter>table</parameter> in <parameter>database</parameter>
1505 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
1506 is &nil; by default which means that the attribute specified by
1507 <parameter>attribute</parameter>, if it exists, must be user
1508 owned else &nil; is returned. If <parameter>owner</parameter> is
1509 a string denoting a user name, the attribute, if it exists, must
1510 be owned by <parameter>owner</parameter> else &nil; is returned,
1511 whereas if <parameter>owner</parameter> is <symbol>:all</symbol>
1512 then the attribute, if it exists, will be returned regardless of
1516 <para>Other information is also returned. The second value is
1517 the type precision, the third is the scale and the fourth
1518 represents whether or not the attribute accepts null values (a
1519 value of 0) or not (a value of 1).
1523 <title>Examples</title>
1525 (attribute-type [emplid] [employee])
1530 <title>Side Effects</title>
1536 <title>Affected by</title>
1538 <symbol>*default-database*</symbol>
1542 <title>Exceptional Situations</title>
1548 <title>See Also</title>
1550 <member><link linkend="list-attributes"><function>list-attributes</function></link></member>
1551 <member><link linkend="list-attribute-types"><function>list-attribute-types</function></link></member>
1555 <title>Notes</title>
1562 <refentry id="list-attribute-types">
1564 <refentrytitle>LIST-ATTRIBUTE-TYPES</refentrytitle>
1567 <refname>LIST-ATTRIBUTE-TYPES</refname>
1568 <refpurpose>Returns information about the attribute types of a table.</refpurpose>
1569 <refclass>Function</refclass>
1572 <title>Syntax</title>
1574 <function>list-attribute-types</function> <replaceable>table</replaceable> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
1577 <title>Arguments and Values</title>
1580 <term><parameter>table</parameter></term>
1583 The name of a table as a string, symbol or SQL expression.
1588 <term><parameter>owner</parameter></term>
1591 A string, &nil; or <symbol>:all</symbol>.
1596 <term><parameter>database</parameter></term>
1599 A database object which defaults to
1600 <symbol>*default-database*</symbol>.
1605 <term><parameter>result</parameter></term>
1615 <title>Description</title>
1616 <para>Returns a list containing information about the SQL types
1617 of each of the attributes in the table specified by
1618 <parameter>table</parameter> in <parameter>database</parameter>
1619 which has a default value of
1620 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
1621 is &nil; by default which means that only attributes owned by
1622 users are listed. If <parameter>owner</parameter> is a string
1623 denoting a user name, only attributes owned by
1624 <parameter>owner</parameter> are listed. If
1625 <parameter>owner</parameter> is <symbol>:all</symbol> then all
1626 attributes are listed. The elements of the returned list are
1627 lists where the first element is the name of the attribute, the
1628 second element is its SQL type, the third is the type precision,
1629 the fourth is the scale of the attribute and the fifth is 1 if
1630 the attribute accepts null values and otherwise 0.
1634 <title>Examples</title>
1636 (list-attribute-types [employee])
1637 => (("emplid" :INT4 4 NIL 0) ("groupid" :INT4 4 NIL 0)
1638 ("first_name" :VARCHAR 30 NIL 1) ("last_name" :VARCHAR 30 NIL 1)
1639 ("email" :VARCHAR 100 NIL 1) ("ecompanyid" :INT4 4 NIL 1)
1640 ("managerid" :INT4 4 NIL 1) ("height" :FLOAT8 8 NIL 1)
1641 ("married" :BOOL 1 NIL 1) ("birthday" :TIMESTAMP 8 NIL 1)
1642 ("bd_utime" :INT8 8 NIL 1))
1646 <title>Side Effects</title>
1652 <title>Affected by</title>
1654 <symbol>*default-database*</symbol>
1658 <title>Exceptional Situations</title>
1664 <title>See Also</title>
1666 <member><link linkend="attribute-type"><function>attribute-type</function></link></member>
1667 <member><link linkend="list-attribute-types"><function>list-attribute-types</function></link></member>
1671 <title>Notes</title>
1678 <refentry id="list-attributes">
1680 <refentrytitle>LIST-ATTRIBUTES</refentrytitle>
1683 <refname>LIST-ATTRIBUTES</refname>
1684 <refpurpose>Returns the attributes of a table as a list.</refpurpose>
1685 <refclass>Function</refclass>
1688 <title>Syntax</title>
1690 <function>list-attributes</function> <replaceable>name</replaceable> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
1693 <title>Arguments and Values</title>
1696 <term><parameter>name</parameter></term>
1699 The name of a table as a string, symbol or SQL expression.
1704 <term><parameter>owner</parameter></term>
1707 A string, &nil; or <symbol>:all</symbol>.
1712 <term><parameter>database</parameter></term>
1715 A database object which defaults to
1716 <symbol>*default-database*</symbol>.
1721 <term><parameter>result</parameter></term>
1731 <title>Description</title>
1732 <para>Returns a list of strings representing the attributes of
1733 table <parameter>name</parameter> in
1734 <parameter>database</parameter> which defaults to
1735 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
1736 is &nil; by default which means that only attributes owned by
1737 users are listed. If <parameter>owner</parameter> is a string
1738 denoting a user name, only attributes owned by
1739 <parameter>owner</parameter> are listed. If
1740 <parameter>owner</parameter> is <symbol>:all</symbol> then all
1741 attributes are listed.
1745 <title>Examples</title>
1747 (list-attributes [employee])
1748 => ("emplid" "groupid" "first_name" "last_name" "email" "ecompanyid" "managerid"
1749 "height" "married" "birthday" "bd_utime")
1753 <title>Side Effects</title>
1759 <title>Affected by</title>
1761 <symbol>*default-database*</symbol>
1765 <title>Exceptional Situations</title>
1771 <title>See Also</title>
1773 <member><link linkend="attribute-type"><function>attribute-type</function></link></member>
1774 <member><link linkend="list-attribute-types"><function>list-attribute-types</function></link></member>
1778 <title>Notes</title>
1785 <refentry id="create-sequence">
1787 <refentrytitle>CREATE-SEQUENCE</refentrytitle>
1790 <refname>CREATE-SEQUENCE</refname>
1791 <refpurpose>Create a database sequence.</refpurpose>
1792 <refclass>Function</refclass>
1795 <title>Syntax</title>
1797 <function>create-sequence</function> <replaceable>name</replaceable> &key <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
1800 <title>Arguments and Values</title>
1803 <term><parameter>name</parameter></term>
1806 The name of the sequence as a string, symbol or SQL expression.
1811 <term><parameter>database</parameter></term>
1814 A database object which defaults to
1815 <symbol>*default-database*</symbol>.
1822 <title>Description</title>
1823 <para>Creates a sequence called <parameter>name</parameter> in
1824 <parameter>database</parameter> which defaults to
1825 <symbol>*default-database*</symbol>.
1829 <title>Examples</title>
1831 (create-sequence [foo])
1833 (sequence-exists-p [foo])
1838 <title>Side Effects</title>
1840 A sequence is created in <parameter>database</parameter>.
1844 <title>Affected by</title>
1846 <symbol>*default-database*</symbol>
1850 <title>Exceptional Situations</title>
1852 An error is signalled if <parameter>name</parameter> is not a
1853 string, symbol or SQL expression. An error of type
1854 <symbol>sql-database-data-error</symbol> is signalled if a
1855 relation called <parameter>name</parameter> already exists.
1859 <title>See Also</title>
1861 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
1862 <member><link linkend="list-sequences"><function>list-sequences</function></link></member>
1863 <member><link linkend="sequence-exists-p"><function>sequence-exists-p</function></link></member>
1864 <member><link linkend="sequence-last"><function>sequence-last</function></link></member>
1865 <member><link linkend="sequence-next"><function>sequence-next</function></link></member>
1866 <member><link linkend="set-sequence-position"><function>set-sequence-position</function></link></member>
1870 <title>Notes</title>
1872 <function>create-sequence</function> is a &clsql; extension.
1877 <refentry id="drop-sequence">
1879 <refentrytitle>DROP-SEQUENCE</refentrytitle>
1882 <refname>DROP-SEQUENCE</refname>
1883 <refpurpose>Drop a database sequence.</refpurpose>
1884 <refclass>Function</refclass>
1887 <title>Syntax</title>
1889 <function>drop-sequence</function> <replaceable>name</replaceable> &key <replaceable>if-does-not-exist</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
1892 <title>Arguments and Values</title>
1895 <term><parameter>name</parameter></term>
1898 The name of the sequence as a string, symbol or SQL expression.
1903 <term><parameter>database</parameter></term>
1906 A database object which defaults to
1907 <symbol>*default-database*</symbol>.
1912 <term><parameter>if-does-not-exist</parameter></term>
1915 A symbol. Meaningful values are <symbol>:ignore</symbol>
1916 or <symbol>:error</symbol> (the default).
1923 <title>Description</title>
1924 <para>Drops the sequence called <parameter>name</parameter> from
1925 <parameter>database</parameter> which defaults to
1926 <symbol>*default-database*</symbol>. If the sequence does not
1927 exist and <parameter>if-does-not-exist</parameter> is
1928 <symbol>:ignore</symbol> then
1929 <parameter>drop-sequence</parameter> returns &nil; whereas an
1930 error is signalled if <parameter>if-does-not-exist</parameter>
1931 is <symbol>:error</symbol>.
1935 <title>Examples</title>
1937 (sequence-exists-p [foo])
1939 (drop-sequence [foo] :if-does-not-exist :ignore)
1941 (sequence-exists-p [foo])
1946 <title>Side Effects</title>
1948 A sequence is dropped from <parameter>database</parameter>.
1952 <title>Affected by</title>
1954 <symbol>*default-database*</symbol>
1958 <title>Exceptional Situations</title>
1960 An error is signalled if <parameter>name</parameter> is not a
1961 string, symbol or SQL expression. An error of type
1962 <symbol>sql-database-data-error</symbol> is signalled if
1963 <parameter>name</parameter> doesn't exist and
1964 <parameter>if-does-not-exist</parameter> has a value of
1965 <symbol>:error</symbol>.
1969 <title>See Also</title>
1971 <member><link linkend="create-sequence"><function>create-sequence</function></link></member>
1972 <member><link linkend="list-sequences"><function>list-sequences</function></link></member>
1973 <member><link linkend="sequence-exists-p"><function>sequence-exists-p</function></link></member>
1974 <member><link linkend="sequence-last"><function>sequence-last</function></link></member>
1975 <member><link linkend="sequence-next"><function>sequence-next</function></link></member>
1976 <member><link linkend="set-sequence-position"><function>set-sequence-position</function></link></member>
1980 <title>Notes</title>
1982 <function>drop-sequence</function> is a &clsql; extension.
1987 <refentry id="list-sequences">
1989 <refentrytitle>LIST-SEQUENCES</refentrytitle>
1992 <refname>LIST-SEQUENCES</refname>
1993 <refpurpose>Returns a list of database sequences.</refpurpose>
1994 <refclass>Function</refclass>
1997 <title>Syntax</title>
1999 <function>list-sequences</function> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
2002 <title>Arguments and Values</title>
2005 <term><parameter>owner</parameter></term>
2008 A string, &nil; or <symbol>:all</symbol>.
2013 <term><parameter>database</parameter></term>
2016 A database object which defaults to
2017 <symbol>*default-database*</symbol>.
2022 <term><parameter>result</parameter></term>
2032 <title>Description</title>
2033 <para>Returns a list of strings representing sequence names in
2034 <parameter>database</parameter> which defaults to
2035 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
2036 is &nil; by default which means that only sequences owned by
2037 users are listed. If <parameter>owner</parameter> is a string
2038 denoting a user name, only sequences owned by
2039 <parameter>owner</parameter> are listed. If
2040 <parameter>owner</parameter> is <symbol>:all</symbol> then all
2041 sequences are listed.
2045 <title>Examples</title>
2052 <title>Side Effects</title>
2058 <title>Affected by</title>
2060 <symbol>*default-database*</symbol>
2064 <title>Exceptional Situations</title>
2070 <title>See Also</title>
2072 <member><link linkend="create-sequence"><function>create-sequence</function></link></member>
2073 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
2074 <member><link linkend="sequence-exists-p"><function>sequence-exists-p</function></link></member>
2075 <member><link linkend="sequence-last"><function>sequence-last</function></link></member>
2076 <member><link linkend="sequence-next"><function>sequence-next</function></link></member>
2077 <member><link linkend="set-sequence-position"><function>set-sequence-position</function></link></member>
2081 <title>Notes</title>
2083 <function>list-sequences</function> is a &clsql; extension.
2088 <refentry id="sequence-exists-p">
2090 <refentrytitle>SEQUENCE-EXISTS-P</refentrytitle>
2093 <refname>SEQUENCE-EXISTS-P</refname>
2094 <refpurpose>Tests for the existence of a database sequence.</refpurpose>
2095 <refclass>Function</refclass>
2098 <title>Syntax</title>
2100 <function>sequence-exists-p</function> <replaceable>name</replaceable> &key <replaceable>owner</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
2103 <title>Arguments and Values</title>
2106 <term><parameter>name</parameter></term>
2109 The name of the sequence as a string, symbol or SQL expression.
2114 <term><parameter>owner</parameter></term>
2117 A string, &nil; or <symbol>:all</symbol>.
2122 <term><parameter>database</parameter></term>
2125 A database object which defaults to
2126 <symbol>*default-database*</symbol>.
2131 <term><parameter>result</parameter></term>
2141 <title>Description</title>
2142 <para>Tests for the existence of an SQL sequence called
2143 <parameter>name</parameter> in <parameter>database</parameter>
2145 <symbol>*default-database*</symbol>. <parameter>owner</parameter>
2146 is &nil; by default which means that only sequences owned by
2147 users are examined. If <parameter>owner</parameter> is a string
2148 denoting a user name, only sequences owned by
2149 <parameter>owner</parameter> are examined. If
2150 <parameter>owner</parameter> is <symbol>:all</symbol> then all
2151 sequences are examined.
2155 <title>Examples</title>
2157 (sequence-exists-p [foo])
2162 <title>Side Effects</title>
2168 <title>Affected by</title>
2170 <symbol>*default-database*</symbol>
2174 <title>Exceptional Situations</title>
2180 <title>See Also</title>
2182 <member><link linkend="create-sequence"><function>create-sequence</function></link></member>
2183 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
2184 <member><link linkend="list-sequences"><function>list-sequences</function></link></member>
2185 <member><link linkend="sequence-last"><function>sequence-last</function></link></member>
2186 <member><link linkend="sequence-next"><function>sequence-next</function></link></member>
2187 <member><link linkend="set-sequence-position"><function>set-sequence-position</function></link></member>
2191 <title>Notes</title>
2193 <function>sequence-exists-p</function> is a &clsql; extension.
2198 <refentry id="sequence-last">
2200 <refentrytitle>SEQUENCE-LAST</refentrytitle>
2203 <refname>SEQUENCE-LAST</refname>
2204 <refpurpose>Return the last element in a database sequence.</refpurpose>
2205 <refclass>Function</refclass>
2208 <title>Syntax</title>
2210 <function>sequence-last</function> <replaceable>name</replaceable> &key <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
2213 <title>Arguments and Values</title>
2216 <term><parameter>name</parameter></term>
2219 The name of the sequence as a string, symbol or SQL expression.
2224 <term><parameter>database</parameter></term>
2227 A database object which defaults to
2228 <symbol>*default-database*</symbol>.
2233 <term><parameter>result</parameter></term>
2243 <title>Description</title>
2244 <para>Return the last value allocated in the sequence called
2245 <parameter>name</parameter> in <parameter>database</parameter>
2246 which defaults to <symbol>*default-database*</symbol>.
2250 <title>Examples</title>
2252 (sequence-last [foo])
2257 <title>Side Effects</title>
2263 <title>Affected by</title>
2265 The current value stored in database sequence
2266 <parameter>name</parameter>.
2269 <symbol>*default-database*</symbol>
2273 <title>Exceptional Situations</title>
2275 Will signal an error of type
2276 <symbol>sql-database-data-error</symbol> if a sequence called
2277 <parameter>name</parameter> does not exist in
2278 <parameter>database</parameter>.
2282 <title>See Also</title>
2284 <member><link linkend="create-sequence"><function>create-sequence</function></link></member>
2285 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
2286 <member><link linkend="list-sequences"><function>list-sequences</function></link></member>
2287 <member><link linkend="sequence-exists-p"><function>sequence-exists-p</function></link></member>
2288 <member><link linkend="sequence-next"><function>sequence-next</function></link></member>
2289 <member><link linkend="set-sequence-position"><function>set-sequence-position</function></link></member>
2293 <title>Notes</title>
2295 <function>sequence-last</function> is a &clsql; extension.
2300 <refentry id="sequence-next">
2302 <refentrytitle>SEQUENCE-NEXT</refentrytitle>
2305 <refname>SEQUENCE-NEXT</refname>
2306 <refpurpose>Increment the value of a database sequence.</refpurpose>
2307 <refclass>Function</refclass>
2310 <title>Syntax</title>
2312 <function>sequence-next</function> <replaceable>name</replaceable> &key <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
2315 <title>Arguments and Values</title>
2318 <term><parameter>name</parameter></term>
2321 The name of the sequence as a string, symbol or SQL expression.
2326 <term><parameter>database</parameter></term>
2329 A database object which defaults to
2330 <symbol>*default-database*</symbol>.
2335 <term><parameter>result</parameter></term>
2345 <title>Description</title>
2346 <para>Increment and return the value of the sequence called
2347 <parameter>name</parameter> in <parameter>database</parameter>
2348 which defaults to <symbol>*default-database*</symbol>.
2352 <title>Examples</title>
2354 (sequence-last [foo])
2356 (sequence-next [foo])
2358 (sequence-next [foo])
2360 (sequence-next [foo])
2365 <title>Side Effects</title>
2367 Modifies the value of the sequence <parameter>name</parameter>
2368 in <parameter>database</parameter>.
2372 <title>Affected by</title>
2374 The current value stored in database sequence
2375 <parameter>name</parameter>.
2378 <symbol>*default-database*</symbol>
2382 <title>Exceptional Situations</title>
2384 Will signal an error of type
2385 <symbol>sql-database-data-error</symbol> if a sequence called
2386 <parameter>name</parameter> does not exist in
2387 <parameter>database</parameter>.
2391 <title>See Also</title>
2393 <member><link linkend="create-sequence"><function>create-sequence</function></link></member>
2394 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
2395 <member><link linkend="list-sequences"><function>list-sequences</function></link></member>
2396 <member><link linkend="sequence-exists-p"><function>sequence-exists-p</function></link></member>
2397 <member><link linkend="sequence-last"><function>sequence-last</function></link></member>
2398 <member><link linkend="set-sequence-position"><function>set-sequence-position</function></link></member>
2402 <title>Notes</title>
2404 <function>sequence-next</function> is a &clsql; extension.
2409 <refentry id="set-sequence-position">
2411 <refentrytitle>SET-SEQUENCE-POSITION</refentrytitle>
2414 <refname>SET-SEQUENCE-POSITION</refname>
2415 <refpurpose>Sets the position of a database sequence.</refpurpose>
2416 <refclass>Function</refclass>
2419 <title>Syntax</title>
2421 <function>set-sequence-position</function> <replaceable>name</replaceable> <replaceable>position</replaceable> &key <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
2424 <title>Arguments and Values</title>
2427 <term><parameter>name</parameter></term>
2430 The name of the sequence as a string, symbol or SQL expression.
2435 <term><parameter>position</parameter></term>
2443 <term><parameter>database</parameter></term>
2446 A database object which defaults to
2447 <symbol>*default-database*</symbol>.
2452 <term><parameter>result</parameter></term>
2462 <title>Description</title>
2463 <para>Explicitly set the position of the sequence called
2464 <parameter>name</parameter> in <parameter>database</parameter>,
2465 which defaults to <symbol>*default-database*</symbol>, to
2466 <parameter>position</parameter> which is returned.
2470 <title>Examples</title>
2472 (sequence-last [foo])
2474 (set-sequence-position [foo] 50)
2476 (sequence-next [foo])
2481 <title>Side Effects</title>
2483 Modifies the value of the sequence <parameter>name</parameter>
2484 in <parameter>database</parameter>.
2488 <title>Affected by</title>
2490 <symbol>*default-database*</symbol>
2494 <title>Exceptional Situations</title>
2496 Will signal an error of type
2497 <symbol>sql-database-data-error</symbol> if a sequence called
2498 <parameter>name</parameter> does not exist in
2499 <parameter>database</parameter>.
2503 <title>See Also</title>
2505 <member><link linkend="create-sequence"><function>create-sequence</function></link></member>
2506 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
2507 <member><link linkend="list-sequences"><function>list-sequences</function></link></member>
2508 <member><link linkend="sequence-exists-p"><function>sequence-exists-p</function></link></member>
2509 <member><link linkend="sequence-last"><function>sequence-last</function></link></member>
2510 <member><link linkend="sequence-next"><function>sequence-next</function></link></member>
2514 <title>Notes</title>
2516 <function>set-sequence-position</function> is a &clsql; extension.
2521 <refentry id="truncate-database">
2523 <refentrytitle>TRUNCATE-DATABASE</refentrytitle>
2526 <refname>TRUNCATE-DATABASE</refname>
2527 <refpurpose>Drop all tables, views, indexes and sequences in a database.</refpurpose>
2528 <refclass>Function</refclass>
2531 <title>Syntax</title>
2533 <function>truncate-database</function> &key <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
2536 <title>Arguments and Values</title>
2539 <term><parameter>database</parameter></term>
2542 <glossterm linkend="gloss-database-object">database
2543 object</glossterm>. This will default to the value
2544 of <symbol>*default-database*</symbol>.</para>
2550 <title>Description</title>
2552 Drop all tables, views, indexes and sequences in
2553 <parameter>database</parameter> which defaults to
2554 <symbol>*default-database*</symbol>.
2558 <title>Examples</title>
2561 => ("type_table" "type_bigint" "employee" "company" "addr" "ea_join" "big")
2563 => ("employeepk" "companypk" "addrpk")
2581 <title>Side Effects</title>
2583 Modifications are made to the underlying database.
2587 <title>Affected by</title>
2593 <title>Exceptional Situations</title>
2595 Signals an error of type <symbol>sql-database-error</symbol> if
2596 <parameter>database</parameter> is not a database object.
2600 <title>See Also</title>
2603 <member><link linkend="drop-table"><function>drop-table</function></link></member>
2604 <member><link linkend="drop-view"><function>drop-view</function></link></member>
2605 <member><link linkend="drop-index"><function>drop-index</function></link></member>
2606 <member><link linkend="drop-sequence"><function>drop-sequence</function></link></member>
2611 <title>Notes</title>
2613 <function>truncate-database</function> is a &clsql; extension.