Страницы 1
хз... не работал, но вот это может быть, или это не совсем то?
ххх: у тебя iperf есть?
yyy: iperf? перфоратор от Apple чтоле?
xxx: Во всем мире уже известны российские дороги и дураки. Сейчас к ним еще домены добавятся.
Неактивен
CREATE [OR ALTER] TRIGGER name FOR tablename
[ACTIVE | INACTIVE]
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
[OR {INSERT | UPDATE | DELETE}
[OR {INSERT | UPDATE | DELETE}]]
[POSITION number]
AS <trigger_body>
https://www.destructor.de/firebird/trigger.htm
зачем нужен IBExpert?
Добавлено спустя 02 мин 07 с:
так что бы если заноситься новая запись С любым номером, все остальные записи подвигались.
куда подвигались?
Слорознание - первая ступень к успешному эникею!
Неактивен
А вобще товарищь Балмер, я смотрю вы влезете в любую дырку, даже только услышав звон и нагуглив первое попавшее вхождение, вы уже спешите отметиться здесь. wink
Я просто не могу понять, как можно бится над пустякойвой задачкой целый день триггер сделать проще простого.
Иногда лучше жевать, и посмотреть, что скажут умные дяди. wink
Это ты себя назвал умным дядей? после этого?
А зачем нужна утилита Pl\SQL для Oracle? А зачем MySQLAdmin и пр утилиты для работы с БД ведь есть же консоль!
Pl/SQL=MySQLAdmin Паша, ну ты гонишь
и ответь ка:
Добавлено спустя 04 мин 42 с:
pavel2403 пишет:
так что бы если заноситься новая запись С любым номером, все остальные записи подвигались.
куда подвигались?
Редактировался bALMER (23-10-10 23:17:48)
Слорознание - первая ступень к успешному эникею!
Неактивен
Пашик, все твои беды оттого, что у тебя верхняя пуговичка не застёгнута ты пытаешься опенсурс задействовать. Поставь уставной MS SQL и всё у тебя получится.
Yesterday it worked.
Today it is not working.
Windows is like that.
Неактивен
DECLARE
t INT;
t1 TEXT;
BEGIN
SELECT INTO t MAX(P_No) FROM Personal;
SELECT INTO t1 Name FROM Personal WHERE P_No=NEW.P_No;
IF t1 IS NULL THEN
RETURN NEW;
ELSE
NEW.P_No=t+1;
RETURN NEW;
END IF;
END;
как-то так это как пример, не оптимизированный, но все же лучше чем ничего
Редактировался bALMER (24-10-10 00:15:25)
Слорознание - первая ступень к успешному эникею!
Неактивен
Select Count(P_No) As t From Personal
не, надо максимальное, ибо count возвращает количество, а не максимальное значение. Т.е. совпадать могут. А с max не совпадут.
Слорознание - первая ступень к успешному эникею!
Неактивен
Это все бла-бла. Докажи что ты не очередной линукс-Иксперт. Короче, есть таблица Personal в ней поля P_No( Integer), Name(Char(64)) ну и т д
Задача. Необходимо сделать триггер, что бы при выполенении Insert Into Personal (P_No, Name) Values (Любое число,'любое значение') если есть сотрудник с таким номером, то его номер менялся бы на последний в таблице, а его место заняла новая запись. Давай, вперде.
Это ведь легко, ты сам сказал. wink Да, все что до AS можешь пропустить.
Не понимаю над чем тут вообще ломать голову? Не могу понять...
Дизайн таблицы какой-то ебанутый. Что за апликация, полагающаяся на столь уебищную логику?
An internal error occurred while showing an internal error.
Неактивен
Павел! Ты не можешь сформулировать задачу четко.
Вот первая формулировка:
Задача. Необходимо сделать триггер, что бы при выполенении Insert Into Personal (P_No, Name) Values (Любое число,'любое значение') если есть сотрудник с таким номером, то его номер менялся бы на последний в таблице, а его место заняла новая запись. Давай, вперде.
То есть, если такой номер уже есть, сменить его на САМЫЙ ПОСЛЕДНИЙ +1.
Вот вторая формулировка:
То что ты написал- просто ахинея во второй части. Потому что никакого обновления таблицы со сдвигом записей не будет. На самом деле будет просто вставлена запись с последним номером, а те что были останутся на месте.
Из которой молодые подаваны понимают, что надо сдвигать остаток таблицы вперед, чтобы освободить место для свежей записи...
окей, вот твоя идея алгоритма сдвига:
for g = New.P_No to t+1
update Personal Set P_No = g Where P_No >New.P_No;
next g
То есть, если у нас есть:
5, Вася
6, Петя
7, Паша
то после первой итерации мы получим:
6, Вася
6, Петя
6, Паша...
И после второй 7,7,7
Вот еще один вариант:
update Personal Set P_No= P_No +1 Where P_No >= New.P_No;
Тут я не уверен, работаю с MySql и там такое просто не пролезет
Опять же непонятна логика такой таблицы, насколько непрерывны эти номера итд
An internal error occurred while showing an internal error.
Неактивен
Кантрабас, вот это:
Задача. Необходимо сделать триггер, что бы при выполенении Insert Into Personal (P_No, Name) Values (Любое число,'любое значение') если есть сотрудник с таким номером, то его номер менялся бы на последний в таблице, а его место заняла новая запись. Давай, вперде.
лично мне позволило понять, что нужна вставка со сдвигом. задача поставлена вполне конкретно, если честно.
ххх: у тебя iperf есть?
yyy: iperf? перфоратор от Apple чтоле?
xxx: Во всем мире уже известны российские дороги и дураки. Сейчас к ним еще домены добавятся.
Неактивен
BEGIN
update Personal Set P_No= P_No +1 Where P_No >= New.P_No;
END
убить мало(
пример:
1 | Name1
2 | Name2
3 | Name3
NEW.P_No=2
update Personal Set P_No= 3 Where P_No >= New.P_No
Где профит??
и где возвращаемое значение? Паш, ты в своем репертуаре(
Редактировался bALMER (25-10-10 00:25:05)
Слорознание - первая ступень к успешному эникею!
Неактивен
Страницы 1