У меня есть таблица с тройным ключом, теперь я хочу показать "дружественное" предупреждение, если я повторяю комбинацию клавиш вместо этого:
Целостность нарушение ограничения - юй\дб\IntegrityException SQLSTATE [23000]: Integrity нарушение ограничения: 1062 Дублированной запись 'CP Meij 01/15-2' для ключа 'PRIMARY' SQL, выполняется было: INSERT INTO
modelo03
(planificacion_fk
,cargo_fk
,medida_apl_fk
,modelo03_cant
,dic_fk
) VALUES ('CP MEIJ 01/15', 3, 2, 4, 'SA')Информация об ошибке: Array ([0] => 23000 [1] => 1062 [2] => Дублировать запись "CP MEIJ 01/15-2" для клавиши "PRIMARY")
↵
Вызвано: PDOException SQLSTATE [23000]: Нарушение ограничения целостности: 1062 Дублирующая запись "CP MEIJ 01/15-2" для ключа "PRIMARY"
в C:\wamp\www\prueba_protected\vendor\yiisoft\yii2\db\Command.php в строке 768
как можно было бы это сделать? Извините за мой английский
Прекратите вставлять тот же planificacion_fk
для новых записей. Ошибка говорит, что вы вставляете одно и то же значение первичного ключа, которое должно быть уникальным для всех записей.
Если вы используете Model (ActiveRecord
- подкласс класса Model
), чтобы вставить эти данные в базу данных, вы можете использовать UniqueValidator.
В этом случае модель не будет сохранена, и вы можете получить список ошибок с ошибками $model->errors
.
Вы можете настроить валидатор для использования собственного сообщения об ошибке.