|
|
|
| У меня проблема. Не могу создать следующий триггер:
CREATE TRIGGER NodeInsert ON Node FOR insert AS
BEGIN
set nocount on
insert into Tree(NodeId, ParentId, Level)
select NodeId, NodeId, 0
from inserted
insert into Tree(NodeId, ParentId, Level)
select n.NodeId, t.ParentId, t.Level + 1
from inserted n, Tree t
where n.ParentId = t.NodeId
END
|
При создании выдает ошибку:"У вас синтаксич ошибка, проверьте в мануале , ошибка около 'ON'"
Пробывал создать на 5.0 и 5.2 версиях mysql. ни как. Также пытался использовать в Postgre... так же безуспешно. Помогите решить вопрос.
Заранее благодарен. | |
|
|
|
|
|
|
|
для: nutt
(18.04.2007 в 10:02)
| | У вас нет ни одной точки с запятой... это неправильно... обычно клиенты используют точку с запятой для разделения запросов и "режут" триггер на части. Для обхода такой ситуации необходимо если вы работаете в консольном клиенте переопределить разделитель. Т.е.,например, вместо ; использовать //. Для этого используется команда DELIMITER
DELIMITER //
CREATE TRIGGER NodeInsert ON Node FOR insert AS
BEGIN
set nocount on;
insert into Tree(NodeId, ParentId, Level)
select NodeId, NodeId, 0
from inserted ;
insert into Tree(NodeId, ParentId, Level)
select n.NodeId, t.ParentId, t.Level + 1
from inserted n, Tree t
where n.ParentId = t.NodeId ;
END //
|
| |
|
|
|
|
|
|
|
для: cheops
(18.04.2007 в 13:25)
| | Всервно безуспешно... | |
|
|
|
|
|
|
|
для: nutt
(18.04.2007 в 23:55)
| | А триггер откуда взяли? Дело в том, что конструкции "ON Node FOR insert AS" и "set nocount on" явно не из MySQL и их следует заменить... вы к какому событию хотите привязать триггер и что он должен делать? | |
|
|
|
|
|
|
|
для: cheops
(19.04.2007 в 03:19)
| | Ммм... да вы правы... я прочитал стстью про построение деревьев... там в качетсве примера использовали MS SQL Server... Вот я и маюсь теперь как сделать на mysql... =(
Вот статья. | |
|
|
|
|
|
|
|
для: nutt
(18.04.2007 в 10:02)
| | Если используется phpMyAdmin, то следует использовать последние версии, которые, также позволяют переопределить разделитель запросов. | |
|
|
|
|
|
|
|
для: cheops
(18.04.2007 в 13:26)
| | Но теперь стоит вопрос с переделываением запрса, дело в том, что в MSSQL можно использовать конструкцию select при insert:
insert into Tree(NodeId, ParentId, Level)
select n.NodeId, t.ParentId, t.Level + 1
from inserted n, Tree t
where n.ParentId = t.NodeId
Сдесь идея в том чтобы вставить в таблицу Tree значения NodeId, ParentId, Level. При этом идет выборка этих значений из только что вставленных и из таблицы tree с условием что ParentId из новых будет равен NodeId из таблицы tree.
MsSQL вроде все просто. Но как в мускле? Подскажите ваши варианты... | |
|
|
|
|
|
|
|
для: nutt
(05.05.2007 в 08:29)
| | В MySQL такой запрос тоже имеет место быть... в принципе всё должно работать
insert into Tree(NodeId, ParentId, Level)
select n.NodeId, t.ParentId, t.Level + 1
from inserted as n, Tree as t
where n.ParentId = t.NodeId
|
Если не работает сообщите пожалуйста какую ошибку выдаёт MySQL-сервер? | |
|
|
|