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 列の一意性を保証するため、同じ cnpj 値を持つ 2 つのレコードを挿入することはできません。

于 2012-11-14T17:13:57.813 に答える