|
|
|
|
|
для: Trianon
(27.03.2007 в 18:00)
| | проверяла, что бы я не вводила, хоть и допустимые данные мне выдается ошибка
#1146 - Table 'db.NEW' doesn't exist | |
|
|
|
|
|
|
|
для: LO
(27.03.2007 в 16:24)
| | так а вариант
CREATE TRIGGER item_attributes_before_insert BEFORE INSERT ON ppg_item_attributes
FOR EACH ROW
BEGIN
DECLARE isset_attr INT DEFAULT 0;
SELECT COUNT(item_attributes_id) INTO isset_attr
FROM ppg_item_attributes WHERE abbreviation = NEW.abbreviation AND item_id != NEW.item_id;
IF (isset_attr > 0)
THEN
DELETE FROM NEW;
END IF;
END
|
не проходит? | |
|
|
|
|
|
|
|
для: Trianon
(27.03.2007 в 16:14)
| | Вобщем я сделала так:
CREATE TRIGGER item_attributes_before_insert BEFORE INSERT ON ppg_item_attributes
FOR EACH ROW
BEGIN
DECLARE isset_attr INT DEFAULT 0;
SELECT COUNT(item_attributes_id) INTO isset_attr
FROM ppg_item_attributes WHERE abbreviation = NEW.abbreviation AND item_id != NEW.item_id;
IF (isset_attr > 0)
THEN
SET NEW.item_id = NULL;
END IF;
END
|
Если выполняется условие, что такой аттрибут есть для другого item_id, я специально присваиваю item_id недопустимое значение NULL, тем самым у меня происходит ошибка и запись не добавляется, что мне и нужно было. Конечно это коряво, но другого выхода я не нашла. | |
|
|
|
|
|
|
|
для: LO
(27.03.2007 в 15:58)
| | Само собой. Вы же BEFORE INSERT TRIGGER пишете. | |
|
|
|
|
|
|
|
для: Trianon
(27.03.2007 в 15:19)
| | нет, это не подойдет.
Нужно до INSERT проверить данные. | |
|
|
|
|
|
|
|
для: LO
(27.03.2007 в 14:54)
| | Вероятно, нужно просто удалить строку из таблицы new. | |
|
|
|
|
|
|
|
для: cheops
(27.03.2007 в 14:24)
| | да, я исправила, триггер создался, но вот дело в том, что мне нужно именно не выполнить INSERT если выполнится условие. А как это сделать?
Как вызвать в триггерах сообщение об ошибке или что-то в этом роде? | |
|
|
|
|
|
|
|
для: LO
(27.03.2007 в 13:49)
| | У вас нет точки с запятой после оператора SELECT. | |
|
|
|
|
|
|
|
для: LO
(27.03.2007 в 13:47)
| | таблица естественным образом раскладывается на
items(id, abbrev NULL)
и
attributes(id, item_id)
ну или если NULL и не NULL обязаны сосуществовать независимо, то
attributes(id, item_id, is_abbreviated) | |
|
|
|
|
|
|
|
для: cheops
(27.03.2007 в 13:26)
| | я не могу его создать
Где-то ошибка ,но я не знаю где именно, ругается на строчку с SELECT | |
|
|
|
|