Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle:फ़ंक्शन आधारित अनुक्रमणिका चयनात्मक विशिष्टता

आपको कुछ इस तरह की आवश्यकता होगी

CREATE UNIQUE INDEX fn_unique_idx 
    ON table1 (CASE WHEN is_deleted='N' THEN id ELSE null END,
               CASE WHEN is_deleted='N' THEN name ELSE null END,
               CASE WHEN is_deleted='N' THEN type ELSE null END);

कार्रवाई में बाधा का एक उदाहरण

SQL> create table table1 (
  2    id number,
  3    name varchar2(10),
  4    type varchar2(10),
  5    is_deleted varchar2(1)
  6  );

Table created.

SQL> CREATE UNIQUE INDEX fn_unique_idx
  2      ON table1 (CASE WHEN is_deleted='N' THEN id ELSE null END,
  3                 CASE WHEN is_deleted='N' THEN name ELSE null END,
  4                 CASE WHEN is_deleted='N' THEN type ELSE null END);

Index created.

SQL> insert into table1 values( 1, 'Foo', 'Bar', 'N' );

1 row created.

SQL> insert into table1 values( 1, 'Foo', 'Bar', 'Y' );

1 row created.

SQL> insert into table1 values( 1, 'Foo', 'Bar', 'Y' );

1 row created.

SQL> insert into table1 values( 1, 'Foo', 'Bar', 'N' );
insert into table1 values( 1, 'Foo', 'Bar', 'N' )
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.FN_UNIQUE_IDX) violated


SQL> insert into table1 values( 1, 'Foo', 'Zee', 'N' );

1 row created.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-02287:यहां अनुक्रम संख्या की अनुमति नहीं है

  2. Oracle सबक्वेरी फनीनेस

  3. Oracle अनुक्रमणिका अशक्त स्तंभ मान कब करता है?

  4. वैश्विक अस्थायी तालिका में डेटा की अवधि?

  5. संख्या डेटा प्रकार के लिए Oracle स्टोर अनुगामी शून्य करता है?