Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Копирование Строк(помогите плиз)

5.3K
06 октября 2003 года
iNot
4 / / 06.10.2003
[smallint] NULL ,
[Position] [int] NULL,
CONSTRAINT [PK_DEVICES] PRIMARY KEY CLUSTERED ([ID]) ON [PRIMARY],
CONSTRAINT [FK_DEVICES_DEVICES] FOREIGN KEY
([PARENT]) REFERENCES [dbo].[DEVICES] ([ID])
)

Т.е.

| id | parent | Дальше идут данные |
| 1 | 1 | |
| 2 | 1 | |
| 3 | 1 | |
| 4 | 3 | |
| 5 | 2 | |
И тому подобное.
т.е. есть одно устройство к нему относяться 3 устройства. вот так.
|------1.1 Dev1
| |----2.1 Dev2
| |----3.1 Dev3
Ну и так далее.
Требуется СКОПИРОВАТЬ это устройство в другое место. к примеру.
|------1.1 Dev1
| |----2.1 Dev2
| |----3.1 Dev3
| |------4.3 Dev1
| | |----5.4 Dev2
| | |----6.4 Dev3
Т.е. вся ветка копируется в другое дочернее устройство.

Нужна сама процедура копирования. Т.е. задаешь ID, как в примере, 1(id устройства которое копируем),
и куда DEST_ID, как в примере, 3(id устройства В которое копируем). И вся ветка копируется.

Люди помогите пожайлуста, я теоретически представляю как это сделать, но знаний моих не хватает.
Если чего не понятно , спросите, я отвечу.

Сейчас получилась процедура(принимаю любые другие процедуры),проблема в том, что эта процетура зацикливается:
ALTER procedure move_devices
@id int,
@dest_id int
as
declare @ta table ([id] int)
declare @tb table ([id] int)

insert into @ta select @id
insert into @tb select @id

while 1=1
begin
insert into devices(PARENT, DEVLEVEL, DEVELOPER, DEVDATE, ALIAS,
DEVICENAME, [DESCRIPTION], STATUS, CODE, Position)
select @dest_id, DEVLEVEL, DEVELOPER, DEVDATE, ALIAS, DEVICENAME,
[DESCRIPTION], STATUS, CODE, Position
from devices
where [id] in (select [id] from @ta)

select @dest_id = @@identity
insert into @tb select * from @ta
delete from @ta
insert into @ta select [id] from devices where parent in (select [id] from
@tb)
delete from @tb
if (select count(*) from @ta)<1 break
end
5.3K
08 октября 2003 года
iNot
4 / / 06.10.2003
И что, никто ничего не скажет?
5.7K
14 октября 2003 года
sorrow
1 / / 14.10.2003
Цитата:
Originally posted by iNot
И что, никто ничего не скажет?


Подскажем...
Короче если есть время, советую разобраться самому, в смысле решений много. А конкретные решения смотри по адресу pwr.ru и osp.ru
(задай в поиск иерархия).
Ну если чего пиши...

5.3K
14 октября 2003 года
iNot
4 / / 06.10.2003
Цитата:
Originally posted by sorrow

Подскажем...
Короче если есть время, советую разобраться самому, в смысле решений много. А конкретные решения смотри по адресу pwr.ru и osp.ru
(задай в поиск иерархия).
Ну если чего пиши...


Времени, на данный момет вообще уже нет.

5.3K
14 октября 2003 года
iNot
4 / / 06.10.2003
Цитата:
Originally posted by sorrow

Подскажем...
Короче если есть время, советую разобраться самому, в смысле решений много. А конкретные решения смотри по адресу pwr.ru и osp.ru
(задай в поиск иерархия).
Ну если чего пиши...


Ссылки мне уже давали. В большинстве там предлагается менять структуру таблицы. для меня это не приемлимо. Т.к. мне надо сделать процедуру. А структуру менять я не могу.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог