@@ -697,15 +697,6 @@ CREATE INDEX test1_lower_col1_idx ON test1 (lower(col1));
697
697
</programlisting>
698
698
</para>
699
699
700
- <para>
701
- Expression indexes also allow control over the scope of unique indexes.
702
- For example, this unique index prevents duplicate integer values from
703
- being stored in a <type>double precision</type>-typed column:
704
- <programlisting>
705
- CREATE UNIQUE INDEX test1_uniq_int ON tests ((floor(double_col)))
706
- </programlisting>
707
- </para>
708
-
709
700
<para>
710
701
If we were to declare this index <literal>UNIQUE</literal>, it would prevent
711
702
creation of rows whose <literal>col1</literal> values differ only in case,
@@ -943,18 +934,11 @@ CREATE UNIQUE INDEX tests_success_constraint ON tests (subject, target)
943
934
WHERE success;
944
935
</programlisting>
945
936
This is a particularly efficient approach when there are few
946
- successful tests and many unsuccessful ones.
937
+ successful tests and many unsuccessful ones. It is also possible to
938
+ allow only one null in a column by creating a unique partial index
939
+ with an <literal>IS NULL</literal> restriction.
947
940
</para>
948
941
949
- <para>
950
- This index allows only one null in the indexed column by using a
951
- partial index clause to process only null column values, and using
952
- an expression index clause to index <literal>true</literal> instead
953
- of <literal>null</literal>:
954
- <programlisting>
955
- CREATE UNIQUE INDEX tests_target_one_null ON tests ((target IS NULL)) WHERE target IS NULL;
956
- </programlisting>
957
- </para>
958
942
</example>
959
943
960
944
<para>