SQL Unique Record not column?

前端 未结 4 1735
[愿得一人]
[愿得一人] 2021-01-07 02:14

Is there a way to insert into an SQL database where the whole record is unique? I know you can make primary keys and unique columns, but that is not what I want.

Wha

4条回答
  •  长发绾君心
    2021-01-07 02:45

    Your question was pretty clear (not sure why others answered with something you'd specifically wanted to exclude), and something I'd spent over an hour trying to find ...

    This link was most helpful http://www.timrosenblatt.com/blog/2008/03/21/insert-where-not-exists/

    On mySQL 5.1.35 ...

        mysql> CREATE TABLE testDupeSyntax  (name varchar(10), place varchar(20) );
    Query OK, 0 rows affected (0.13 sec)
    
    mysql>
    mysql> INSERT INTO testDupeSyntax SELECT 'mango1', 'mango2' FROM DUAL WHERE NOT
    EXISTS( SELECT name FROM testDupeSyntax WHERE name='mango1' LIMIT 1 );
    Query OK, 1 row affected (0.06 sec)
    Records: 1  Duplicates: 0  Warnings: 0
    
    mysql> SELECT * FROM testDupeSyntax;
    +--------+--------+
    | name   | place  |
    +--------+--------+
    | mango1 | mango2 |
    +--------+--------+
    1 row in set (0.00 sec)
    
    mysql> INSERT INTO testDupeSyntax SELECT 'mango1', 'mango2' FROM DUAL WHERE NOT
    EXISTS( SELECT name FROM testDupeSyntax WHERE name='mango1' LIMIT 1 );
    Query OK, 0 rows affected (0.00 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> SELECT * FROM testDupeSyntax;
    +--------+--------+
    | name   | place  |
    +--------+--------+
    | mango1 | mango2 |
    +--------+--------+
    1 row in set (0.00 sec)
    
    mysql> INSERT INTO testDupeSyntax SELECT 'mango1', 'mango2' FROM DUAL WHERE NOT
    EXISTS( SELECT name FROM testDupeSyntax WHERE name='mango1' AND place='mango2' LIMIT 1 );
    Query OK, 0 rows affected (0.00 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> SELECT * FROM testDupeSyntax;
    +--------+--------+
    | name   | place  |
    +--------+--------+
    | mango1 | mango2 |
    +--------+--------+
    1 row in set (0.00 sec)
    
    mysql> INSERT INTO testDupeSyntax SELECT 'mango1', 'mango2' FROM DUAL WHERE NOT
    EXISTS( SELECT name FROM testDupeSyntax WHERE name='mango1' AND place='mango3' LIMIT 1 );
    Query OK, 1 row affected (0.05 sec)
    Records: 1  Duplicates: 0  Warnings: 0
    
    mysql> SELECT * FROM testDupeSyntax;
    +--------+--------+
    | name   | place  |
    +--------+--------+
    | mango1 | mango2 |
    | mango1 | mango2 |
    +--------+--------+
    2 rows in set (0.00 sec)
    
    mysql>
    

提交回复
热议问题