powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Люди ADO, ID достал! Помогите пожалуйста
22 сообщений из 22, страница 1 из 1
Люди ADO, ID достал! Помогите пожалуйста
    #32008476
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi everybody.
Я понимаю, что эта тема даже мной подымалась два раза, но тогда не обсуждали как оказалось самого главного.
Есть у меня таблица, для которой определен триггер вставляющий данные в другую таблицу. В EM делаю insert руками. В результате в поле ID вместо последнего ID для этой таблицы оказывается ID из другой. Из той в которую триггер вставил. Ну а мне конечно надо мой ID.
Я так понимаю, что EM сам через ADO работает, потому что в Delphi тоже самое происходит, там то меня эта проблема и беспокоит. Вроде конечно все просто: нажми refresh и делу конец. Или TADOQuery.Requery. Ну это ж чушь, не может так быть, что бы люди разработавшие ADO такое фуфло сделали.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32008479
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Ну это ж чушь, не может так быть, что бы люди разработавшие ADO такое фуфло сделали.

А ты раньше никогда ляпов а-ля мисрософт не видел?
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32008482
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бывало Павел и не раз, но столь серьезных не встречал. Ведь это по крацней мере у нас полностью отвергает использоывание свойства IDENTITY. Это не ляп а ляпище получается. Если конечно нельзя заставить ADO scope_identity читать.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32008485
sestrin@mail.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я выкручиваюсь так: в каждый Insert-триггер вставляю нижеследующую ахинею, увиденную год назад на каком-то сайте

DECLARE @Identity int, @strSQL varchar(12, @MaxRows int
--Тут запоминание identity
SET @Identity=@@IDENTITY

--
--Тут все твои дела
--

--Тут вставка в другую таблицу, тоже имеющую identity
INSERT INTO tObjectEvent (TableName, ObjectId, Description)
SELECT 'tCity', Id, 'Добавление' FROM inserted

--Тут восстановление identity
SET @strSQL='SELECT Identity (Int, ' + Cast(@Identity As Varchar(10)) + ', 1) As id Into #Tmp'
Execute (@strSQL)
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32008522
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за добрые слова. Я и есть автор этой ахинеи . Для SQL2K можно короче:

В начале триггера ничего, в конце

Declare @s Varchar(100)
Set @s = 'Declare @tbl Table(id Int Identity(' + Cast(Ident_Current('Test') As Varchar(10)) +',1), val Int) Insert Into @tbl Select 1'
Execute(@s)
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32008523
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на всякий случай: 'Test' - это имя таблицы, на которой триггер.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32008527
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понял зачем все это?
Как вернуть ID на TSQL, например в QA я знаю. В конце концов в триггере напиши select id from inserted или с клиента отправь insert into Table (Text) values ('123') select scope_identity() as 'Вот то о чем мечтал!' и все. Вопрос в том как заставить ADO читать, то что нужно. Хотя это невозможно. Я конечно такого глюка не ожидал от ADO.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32008531
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Не понял зачем все это?

Вообще то это решение твой проблемы. Ну а зачем все это тебе - тебе, наверное, видней.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32008570
George
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понимаю, в чем проблема.
Я создал сдледующую структуру таблиц и триггеров:

Create Table A1(
a1 int IDENTITY
,txt char(10) NULL
)
Go

Create Table A2(
a2 int IDENTITY
,a1 int NULL
)
Go

Create trigger A1_Insert
on A1
for insert
As

Insert into A2(a1)
select a1 from inserted
Go

проверил и в Enterprise Manager, и в Query Analizer - никаких проблем.

PS. Интересно, откуда известно, что EM работает через ADO? Я никаких данных по этому поводу не нашел.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32008589
bjack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
насколько я помню EM работает через ODBC
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32008593
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Garya Привилегированный пользователь
Участник
И EM, и QA работают через ODBC. Я тоже в недоумении, причем здесь ADO. Вероятно, если бы в теме было "проклятый SQL!", было бы как-то хоть чуть-чуть понятнее . И уж совсем непонятно, что за задачу решает Slava. На вопрос, "как заставить сервер читать то, что нужно?" встречный вопрос: "А ты сам-то знаешь, что нужно?". Если знаешь, то напиши на русском языке, а потом оттранслируй написанное в T-SQL. Если последняя операция не получится, обращайся за помощью на данный форум.
P.S. У меня есть глубокие подозрения, что решение Павла - как раз то, что тебе нужно. Прочти повнимательнее ответы.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32008601
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже никто суть не понял. Как запомнить последний вставленный ID в мою таблицу я и сам могу придумать. Это несложно. И уж точно смогу написать что-то типа select id from inserted в триггере. На самом деле проблема в том что ADO компоненты читают @@IDENTITY а не scope_identity как надо было бы. Поэтому если Вы уважаемые коллеги создадите триггер на insert в котором происходит вставка в другую таблицу и попытаетесь вставить в первую запись в EM, то сразу поймете о чем я.
Я не интересовался через что EM работает, но раз в EM и Delphi происходит одно и тоже, то значит они через одно и тоже работают или ODBC тоже глючит.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32008604
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел я Вас понял только что Решение довольно красивое. Если ADO update не поможет, буду использовать. Спасибо.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32008612
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принципе определение ID можно поручить и свойству Resync Command рекордсета. Только к сожалению использовать SCOPE_IDENTITY() в ней не удастся - ADO Выполняет запрос на добавление и Resync Command в разных Scop'ах. Зато вполне можно использовать IDENT_CURRENT('table_name').
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32009001
Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Зато вполне можно использовать IDENT_CURRENT('table_name').

Ага
особенно, если учесть, что он for any session.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32009002
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно подумать @@Identity for current session. И ничего, в 7.0 нормально используется.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32009006
cube
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Плохому танцору мешает известно что. Работайте с SP и не морочьте себе голову
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32009008
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Павел
>А можно подумать @@Identity for current session.

Умгу именно for current session.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32009024
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Genady

Точно, я проглючил. IDENT_CURRENT не годится. Спасибо что вразумили.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32009041
Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Павел

>2 Genady

А где же ту Владимир
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32009042
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давайте про "Деревья и блокировки" пообщаемся. Это тоже мой топик.
...
Рейтинг: 0 / 0
Люди ADO, ID достал! Помогите пожалуйста
    #32009043
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Vladimir

Простите, и Вам Спасибо!
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Люди ADO, ID достал! Помогите пожалуйста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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