|
|
|
| Подскажите пожалуйста, как написать триггер, который выдавал бы ошибку при добавлении или обновлении поля, только в случае, когда 2 вводимых значения полей совпадают с двумя существующими одновременно. Заранее благодарю... | |
|
|
|
|
|
|
|
для: chelovek
(23.06.2007 в 14:15)
| | Приведите структуру таблицы (оператор SHOW CREATE TABLE), если не сложно, и укажите о каких полях идёт речь? | |
|
|
|
|
|
|
|
для: cheops
(23.06.2007 в 14:19)
| | Ну структурка совсем простая...
CREATE TABLE `jobtitle` (
`id_JobTitle` int(11) NOT NULL auto_increment,
`id_CategoryWorker` int(11) NOT NULL,
`Title` char(255) NOT NULL,
PRIMARY KEY (`id_JobTitle`),
KEY `id_CategoryWorker` (`id_CategoryWorker`),
CONSTRAINT `jobtitle_ibfk_1` FOREIGN KEY (`id_CategoryWorker`) REFERENCES `categoryworker` (`id_CategoryWorker`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
Поля `id_CategoryWorker` и `Title` как раз и должны проверяться на уникальность! | |
|
|
|
|
|
|
|
для: chelovek
(23.06.2007 в 14:30)
| | а уникальный ключ на два поля поставить недостаточно? | |
|
|
|
|
|
|
|
для: Trianon
(24.06.2007 в 02:50)
| | А как это сделать??? Честно говоря это наверное было бы лучше... | |
|
|
|
|
|
|
|
для: chelovek
(24.06.2007 в 05:35)
| | Выполните запрос
ALTER TABLE jobtitle ADD UNIQUE (
id_CategoryWorker ,
Title)
|
Или создайте таблицу по новой при помощи SQL-запроса
CREATE TABLE jobtitle (
id_JobTitle int(11) NOT NULL auto_increment,
id_CategoryWorker int(11) NOT NULL,
Title char(255) NOT NULL,
PRIMARY KEY (`id_JobTitle`),
KEY `id_CategoryWorker` (`id_CategoryWorker`),
CONSTRAINT `jobtitle_ibfk_1` FOREIGN KEY (`id_CategoryWorker`) REFERENCES `categoryworker` (`id_CategoryWorker`) ON UPDATE CASCADE UNIQUE KEY id_CategoryWorker_2,
(id_CategoryWorker,Title)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
| |
|
|
|
|
|
|
|
для: cheops
(24.06.2007 в 11:40)
| | Пасибо, все заработало...
Но тем не менее нельзя ли увидеть пример подобного триггера - это на будущее, для общего развития, если не сложно... | |
|
|
|