Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
4 / 4 / 2
Регистрация: 07.10.2015
Сообщений: 43

Оператор @@IDENTITY

24.09.2016, 09:39. Показов 1634. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Буду очень признателен если поможете разобраться с заданием.
Задание:
Таблица T1(ID int identity(1,1),DocID int,SumDoc float) - заголовок документа
Таблица T2(ID int,Pos int,PosTime datetime,SumPos float) - детали документа

таблицы T1 и T2 не содержат значений
связь между таблицами T1 и T2 по полю ID

Заполняем таблицу вот таким образом:
T-SQL
1
2
3
4
insert into T1(DocID, SumDoc) values(1,11.1)
insert into T2(ID,Pos,PosTime,SumPos) values(@@IDENTITY,1,getdate(),2.1)
insert into T2(ID,Pos,PosTime,SumPos) values(@@IDENTITY,2,getdate(),3.4)
insert into T2(ID,Pos,PosTime,SumPos) values(@@IDENTITY,3,getdate(),5.6)

1) Все бы ничего - все вроде элементарно но когда создаю и заполняю таблицы, Id второй таблицы у меня null - ну а из-за этого все остальные проблемы вылазят.((( Разве не должно по умолчанию быть 1 с шагом 1.

2) Вот тут не получается: написать скрипт, который выведет все позиции(Pos) из детальной части в строку через запятую для заданного ID документа.
Результат для документа должен быть 1,2,3
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.09.2016, 09:39
Ответы с готовыми решениями:

тонкости @@IDENTITY
допустим есть некая таблица и хранимая процедура create table t1( F_ID int not null identity, F_Name nvarchar(35)...

SCOPE_IDENTITY(),@@IDENTITY
Доброго времени суток, есть проблема автоматической вставки PK_ID из столбца А в FK_ID столбца Б как это можно провернуть со...

Проблема с @@identity
Делаю БД для сети комп магазинов. Создал таблицы, связал. Попробовав занести данные, столкнулся со следующей ошибкой(скриншоты). После...

8
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
24.09.2016, 09:44
Цитата Сообщение от Tiger Посмотреть сообщение
когда создаю и заполняю таблицы, Id второй таблицы у меня null
Во второй таблице же нет свойства IDENTITY.
Что удивительного?
0
4 / 4 / 2
Регистрация: 07.10.2015
Сообщений: 43
24.09.2016, 10:19  [ТС]
Просто я понял выражение: "связь между таблицами T1 и T2 по полю ID" что в T2 Id тоже как первичный ключ и уже не обязательно прописывать identity(1,1). Не хватает опыта поэтому прошу уточнить и помочь.
Тоесть я все правильно понял? Id во второй таблице null, т.к предшествующего значения перед @@IDENTITY нет.
А как тогда сформировать этот запрос чтобы результат для документа был 1,2,3?
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
24.09.2016, 13:06
При чём здесь @@IDENTITY ??
Это просто такая системная функция, возвращающая последнее вставленное значение в какое-то поле со свойством IDENTITY в пределах всей базы данных.
Значение присваивается и инкреминируется автоматически, только если поле таблицы имеет свойство IDENTITY.
Что мешает открыть справку и прочитать об этом?
0
4 / 4 / 2
Регистрация: 07.10.2015
Сообщений: 43
25.09.2016, 09:46  [ТС]
Абсолютно ничего не мешает, и даже больше, неоднократно перечитывал и все равно не понимаю.
Может сможете подсказать литературу с хорошим примером по этому вопросу.
По отдельности нет ничего сложного в этом примере - но в целом он меня ставит в ступор, именно по этой причине обратился на форуме с помощью. Больше проблема что я тупо не могу понять задания - когда ID значения - по нему получается null.
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
25.09.2016, 11:38
Цитата Сообщение от Tiger Посмотреть сообщение
Больше проблема что я тупо не могу понять задания - когда ID значения - по нему получается null.
Функция @@identity возвращает последнее сгенерированное значение identity в БД. Не в какой-то определенной таблице, а в БД
Если же последняя операция вставки была в таблицу без identity-столбца, @@identity вернет null. Об этом в документации написано открытым текстом.

Поэтому, в вашем случае в первой инструкции insert into T2 ... values(@@IDENTITY ...), функция @@identity вернет какое-то значение, а в остальных двух вернет null.
Перепишите так
T-SQL
1
2
3
4
5
6
7
insert into T1(DocID, SumDoc) values(1,11.1);
 
declare @id = @@identity;
 
insert into T2(ID,Pos,PosTime,SumPos) values(@id,1,getdate(),2.1);
insert into T2(ID,Pos,PosTime,SumPos) values(@id,2,getdate(),3.4);
insert into T2(ID,Pos,PosTime,SumPos) values(@id,3,getdate(),5.6);
1
4 / 4 / 2
Регистрация: 07.10.2015
Сообщений: 43
25.09.2016, 15:53  [ТС]
Вот теперь понял! Спасибо! А по второму вопросу не подскажете, т.к я условия не могу задания менять..: скрипт, который выведет все позиции(Pos) из детальной части в строку через запятую для заданного ID документа.
Результат для документа должен быть 1,2,3. Я не смогу написать? - правильно? Или я опять что-то не понимаю?
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
25.09.2016, 16:35
Цитата Сообщение от Tiger Посмотреть сообщение
скрипт, который выведет все позиции(Pos) из детальной части в строку через запятую для заданного ID документа.
https://habrahabr.ru/post/200120/
1
4 / 4 / 2
Регистрация: 07.10.2015
Сообщений: 43
25.09.2016, 17:45  [ТС]
Всем спасибо! Во всем разобрался!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.09.2016, 17:45
Помогаю со студенческими работами здесь

Identity seed
После импорта бд на локальный сервер пропал (не сбросился а именно пропал) identity_seed у таблицы. Есть идеи как можно это исправить не...

@@IDENTITY данной таблицы
Имеется таблица MyTable1, которая содержит триггер: CREATE TRIGGER trig_MyTable1 ON dbo.MyTable1 FOR INSERT AS INSERT INTO...

Последовательная нумеровка identity
Помогите сделать последовательную нумеровку таблицы столбца "idseller", в гугле очень мало инфы про identity. Как сделать так что бы...

Вернуть значение столбца identity
Здравствуйте. Вот стоит у меня задача сделать регистрацию пользователя. В базу добавляются Login, Password, Nickname. Столбец UserId...

Корректное создание таблиц с IDENTITY
Здравствуйте, уважаемые форумчане! Доброго вам времени суток! =) Возник следующий вопрос при создании-заполнении таблиц. Пусть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru