Текущий архив: 2009.09.27;
Скачать: CL | DM;
Вниз
как этот FB триггер перевести на MS SQL Найти похожие ветки
← →
DSKalugin © (2008-11-26 17:39) [0]портирую базу firebird 1.5.5 на MS SQL 2005, с которым я плохо знаком
как этот триггер реализовать в MS?
CREATE OR ALTER TRIGGER TR_GRAPH_DETAIL_BI FOR GRAPH_DETAIL
ACTIVE BEFORE INSERT POSITION 0
as
begin
select coalesce(max(ord_num), 0)+1 from GRAPH_DETAIL
where graph_id=new.graph_id
into new.ord_num;
end
генератор для ord_num не подходит
← →
clickmaker © (2008-11-26 17:42) [1]INSTEAD OF INSERT, наверно
только почему не использовать identity?
← →
Ega23 © (2008-11-26 17:54) [2]ты graph_id и ord_num синхронизовать что-ли хочешь?
А зачем, если не секрет?
← →
sniknik © (2008-11-26 17:57) [3]> INSTEAD OF INSERT, наверно
в общем случае не получится, если только добавлять все всегда только по одной записи. в MSSQL тригер срабатывает один на групповую вставку, а не для каждой как в IB/FB.
> только почему не использовать identity?
однозначно!
← →
clickmaker © (2008-11-26 17:59) [4]если идентити не подходит из-за возможной дырявости, то как-то так
CREATE TRIGGER TR_GRAPH_DETAIL_BI ON GRAPH_DETAIL
AFTER INSERT
as
begin
declare @new_num int
select @new_num = isnull(max(ord_num), 0)+1 from GRAPH_DETAIL
where graph_id=inserted.graph_id
update inserted set ord_num = @new_num
end
← →
DSKalugin © (2008-11-26 18:05) [5]> только почему не использовать identity?
последовательность должна быть сплошной, не дырявой и порядок строк имеет значение (его вручную должны будут менять/перенумеровывать)
← →
DSKalugin © (2008-11-26 18:08) [6]похоже триггер тут вообще не поможет, придется перенумеровывать программно табличку в соответствии с тем, как юзер выстроит порядок строк
вопрос снят
Страницы: 1 вся ветка
Текущий архив: 2009.09.27;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.011 c