Задачка

Alexander
Дата: 16.03.2001 13:08:01
Имеется таблица, содержащая 2 поля: одно целочисленное, другое - текстовое, размер которого позволяет хранить максимальное значение первого поля, преобразованное в текст.
Нужно написать триггер, который при вставке и обновлении записи в таблице, если изменяется значение целочисленного поля, преобразовывал бы целочисленной значение в текстовую строку и заменял значение текстового поля.

Доп. условия:
- первичный ключ не определен
- записи добавляются и обновляются по одной


У кого будут идеи...
SergSuper
Дата: 16.03.2001 13:21:24
нужно как-то связать inserted с таблицей

если целочисленное значение уникально:

create trigger ... for insert, update
as
update tbl
set str_value=convert(int_value)
from tbl t, inserted i
where t.int_value=i.int_value

если никак не связать

create trigger ... for insert, update
as
update tbl
set str_value=convert(int_value)
from tbl t
where str_value<>convert(int_value) or str_value is null

но это, конечно, для небольших таблиц
Alexander
Дата: 16.03.2001 14:07:22
О уникальности значений ничего не сказано, но поскольку первичный ключ не определен, скорее всего, уникальные значения допускаются. А заменять значение текстового поля нужно именно в той записи, в которой обновлено значение числового поля, а не во всех записях, имеющих это значение.
SergSuper
Дата: 16.03.2001 14:16:38
ну вообще-то существуют задачи, которые невозможно решить

а чем плохо если будут изменены все записи?
а вообще я не понимаю, зачем делать таблицы без уникального ключа, а потом думать, как извратиться, чтобы работать с ней

или Вы знаете ответ и это такой тест?
Alexander
Дата: 16.03.2001 14:24:05
Да, это вопрос теста, на который мне предложено было найти ответ. За два дня мне не удалось найти ответ...
Slawa
Дата: 16.03.2001 22:17:45
2All

А у меня вообще ничего не получилось

CREATE TABLE Table1 (
i_v int,
s_v char(10)
)

В этой таблице патался ввести несколько одинаковых значений, а потом попытался внести в них изменения, естественно ничего не получилось по идее так и должно быть, тогда вопрос, в чём суть теста, если пример заведомо не рабочий.

Или может я совсем ламер?
baxxtor
Дата: 17.03.2001 00:18:46
используйте СП и не чирикайте народу мозги.
Dmitry
Дата: 17.03.2001 02:58:12
Суть теста похоже в том, чтобы сказать тому кто его задал, что он в принципе некорректен. Отрицательный результат тоже результат. Ведь это тест, а не практическая задача. А может все таки Alexander не так понял, например насчет уникальности значений
Dmitry
Дата: 17.03.2001 03:03:23
baxxtor,Slawa же уже сказал, что изменить только одну строку при повторяющихся значениях невозможно. НИКАК. ТАк что хоть SP, хоть триггер, без разницы
baxxtor
Дата: 18.03.2001 07:40:10
СП будет работать только на вставку данных. Для апдейта это работать не будет. Хотелось бы у автора спросить что за задача и почему построена такая таблица при таких условиях.