1

我的表地籍:

cod_bolsa VARCHAR(7) PRIMARY KEY
nome VARCHAR(70) NOT NULL
endereco VARCHAR(100) NOT NULL
email VARCHAR(50) NOT NULL
telefone VARCHAR(13) NOT NULL
celular VARCHAR(14) NOT NULL
cpf VARCHAR(14) UNIQUE
cnpj VARCHAR(18) UNIQUE
rg VARCHAR(12) UNIQUE
datanasc VARCHAR(12) NOT NULL

查询:

INSERT INTO cadastro VALUES(
'000036',
'JULIO CESAR',
'AV. FRANZ VOEGELI, 300 - VILA YARA, SÃO PAULO/SP',
'julio.c@mail.com',
'(11)2345-6789',
'(11)99876-5432',
'987.654.321.00',
'',
'98.765.432-1',
'1972-5-12'
);


INSERT INTO cadastro VALUES(
'000125',
'JOAO MARIA',
'AV. FRANZ VOEGELI, 300 - VILA YARA, SÃO PAULO/SP',
'joao.m@mail.com',
'(11)2345-6789',
'(11)91676-1334',
'012.234.567-89',
'',
'01.234.345-8',
'1991-1-20'
);

MySQL显然说

ERROR 1062 (23000): Duplicate entry '' for key 'cnpj'

如何避免?

4

2 回答 2

1

“解决”这个问题的最明显方法当然是使该字段不唯一。

但也许,您想要“如果违反唯一约束,则使用其他内容更新上一个条目”之类的内容。

在这种情况下,您可能想要使用“ON DUPLICATE KEY UPDATE”或“REPLACE INTO”,这两者都在此处进行了说明

于 2012-11-14T17:12:05.670 回答
0

您的表在 ; 上有一个 UNIQUE 约束[cnpj VARCHAR(18)]。UNIQUE 约束保证 cnpj 列的唯一性,因此您不能插入 2 条具有相同 cnpj 值的记录。

于 2012-11-14T17:13:57.813 回答