Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Копирование значения поля identity / 10 сообщений из 10, страница 1 из 1
27.12.2018, 16:53
    #39754029
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование значения поля identity
Всем привет!
Подскажите пожалуйста как при insert скопировать значение поля identity в другое поле?

Как делаю сейчас
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table #tmp(fld1 int identity(1,1),fld2 int,fld3 varchar(10))

insert into #tmp(fld3)
values('hello'),('world')

-- вот от этого апдейта хочу избавиться, какую магию надо применить? :)
update #tmp set
 fld2 = fld1

select *
from #tmp

drop table #tmp



мне нужно чтобы поле fld2 заполнялось при insert такими же значениями как и поле fld2
...
Рейтинг: 0 / 0
27.12.2018, 16:54
    #39754031
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование значения поля identity
Забыл версию SQL написать
SQL Server 2012 sp4 enterprise
...
Рейтинг: 0 / 0
27.12.2018, 16:59
    #39754035
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование значения поля identity
MandarinПодскажите пожалуйста как при insert скопировать значение поля identity в другое поле?Никак. Можно разве что скрыть этот update, убрав его в триггер. Или можно сделать вычисляемсое поле, но, наверное, вам нужно обычное.
...
Рейтинг: 0 / 0
27.12.2018, 17:01
    #39754038
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование значения поля identity
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table #tmp(fld1 int identity(1,1)
                           --,fld2 int
                           ,fld3 varchar(10))

insert into #tmp(fld3)
values('hello'),('world')

-- вот от этого апдейта хочу избавиться, какую магию надо применить? :)
--update #tmp set
-- fld2 = fld1

select *, fld2 = fld1
from #tmp
...
Рейтинг: 0 / 0
27.12.2018, 17:06
    #39754042
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование значения поля identity
Поле должно быть обычным не вычисляемым и оно должно быть. Это боле используется дальше по логике программы.
...
Рейтинг: 0 / 0
27.12.2018, 17:09
    #39754047
_human
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование значения поля identity
...
Рейтинг: 0 / 0
27.12.2018, 17:29
    #39754064
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование значения поля identity
Mandarin,

sequence вместо identity не предлагать?
...
Рейтинг: 0 / 0
27.12.2018, 18:24
    #39754118
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование значения поля identity
Хотя, можно вот такое извращение организовать
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
create table dbo.t (id int identity primary key, v int, id2 int);
go

create trigger dbo.tr_t
on dbo.t
instead of insert
as
begin
 set nocount on;

 exec sys.sp_getapplock @Resource = N'dbo.t__insert', @LockMode = N'Exclusive', @LockOwner = N'Transaction', @LockTimeout = -1;

 set identity_insert dbo.t on;

 declare @ic int = ident_current('dbo.t');

 insert into dbo.t
  (id, v, id2)
  select
   @ic + row_number() over (order by (select 1)),
   i.v,
   @ic + row_number() over (order by (select 1))
  from
   inserted i;
end;
go

insert into dbo.t (v)
values
 (10), (20), (30);

select * from dbo.t;
go

drop table dbo.t;
go

Правда работать будет не всегда
...
Рейтинг: 0 / 0
27.12.2018, 20:34
    #39754201
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование значения поля identity
...
Рейтинг: 0 / 0
27.12.2018, 20:42
    #39754204
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование значения поля identity
Mandarin,

А можно для общего развития рассказать для чего далее используется это поле fld2 ?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Копирование значения поля identity / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]