Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Hi everybody. Я понимаю, что эта тема даже мной подымалась два раза, но тогда не обсуждали как оказалось самого главного. Есть у меня таблица, для которой определен триггер вставляющий данные в другую таблицу. В EM делаю insert руками. В результате в поле ID вместо последнего ID для этой таблицы оказывается ID из другой. Из той в которую триггер вставил. Ну а мне конечно надо мой ID. Я так понимаю, что EM сам через ADO работает, потому что в Delphi тоже самое происходит, там то меня эта проблема и беспокоит. Вроде конечно все просто: нажми refresh и делу конец. Или TADOQuery.Requery. Ну это ж чушь, не может так быть, что бы люди разработавшие ADO такое фуфло сделали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2001, 03:17 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
>Ну это ж чушь, не может так быть, что бы люди разработавшие ADO такое фуфло сделали. А ты раньше никогда ляпов а-ля мисрософт не видел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2001, 04:52 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Бывало Павел и не раз, но столь серьезных не встречал. Ведь это по крацней мере у нас полностью отвергает использоывание свойства IDENTITY. Это не ляп а ляпище получается. Если конечно нельзя заставить ADO scope_identity читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2001, 05:16 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Я выкручиваюсь так: в каждый 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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2001, 05:48 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Спасибо за добрые слова. Я и есть автор этой ахинеи . Для 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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2001, 07:59 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
на всякий случай: 'Test' - это имя таблицы, на которой триггер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2001, 08:02 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Не понял зачем все это? Как вернуть ID на TSQL, например в QA я знаю. В конце концов в триггере напиши select id from inserted или с клиента отправь insert into Table (Text) values ('123') select scope_identity() as 'Вот то о чем мечтал!' и все. Вопрос в том как заставить ADO читать, то что нужно. Хотя это невозможно. Я конечно такого глюка не ожидал от ADO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2001, 08:22 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
>Не понял зачем все это? Вообще то это решение твой проблемы. Ну а зачем все это тебе - тебе, наверное, видней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2001, 09:00 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Не понимаю, в чем проблема. Я создал сдледующую структуру таблиц и триггеров: 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? Я никаких данных по этому поводу не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2001, 12:19 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
насколько я помню EM работает через ODBC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2001, 14:48 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
И EM, и QA работают через ODBC. Я тоже в недоумении, причем здесь ADO. Вероятно, если бы в теме было "проклятый SQL!", было бы как-то хоть чуть-чуть понятнее . И уж совсем непонятно, что за задачу решает Slava. На вопрос, "как заставить сервер читать то, что нужно?" встречный вопрос: "А ты сам-то знаешь, что нужно?". Если знаешь, то напиши на русском языке, а потом оттранслируй написанное в T-SQL. Если последняя операция не получится, обращайся за помощью на данный форум. P.S. У меня есть глубокие подозрения, что решение Павла - как раз то, что тебе нужно. Прочти повнимательнее ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2001, 16:21 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Похоже никто суть не понял. Как запомнить последний вставленный ID в мою таблицу я и сам могу придумать. Это несложно. И уж точно смогу написать что-то типа select id from inserted в триггере. На самом деле проблема в том что ADO компоненты читают @@IDENTITY а не scope_identity как надо было бы. Поэтому если Вы уважаемые коллеги создадите триггер на insert в котором происходит вставка в другую таблицу и попытаетесь вставить в первую запись в EM, то сразу поймете о чем я. Я не интересовался через что EM работает, но раз в EM и Delphi происходит одно и тоже, то значит они через одно и тоже работают или ODBC тоже глючит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2001, 04:42 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Павел я Вас понял только что Решение довольно красивое. Если ADO update не поможет, буду использовать. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2001, 05:11 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
В принципе определение ID можно поручить и свойству Resync Command рекордсета. Только к сожалению использовать SCOPE_IDENTITY() в ней не удастся - ADO Выполняет запрос на добавление и Resync Command в разных Scop'ах. Зато вполне можно использовать IDENT_CURRENT('table_name'). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2001, 07:37 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
>Зато вполне можно использовать IDENT_CURRENT('table_name'). Ага особенно, если учесть, что он for any session. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2001, 05:15 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
А можно подумать @@Identity for current session. И ничего, в 7.0 нормально используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2001, 05:31 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Плохому танцору мешает известно что. Работайте с SP и не морочьте себе голову ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2001, 05:56 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
2 Павел >А можно подумать @@Identity for current session. Умгу именно for current session. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2001, 06:02 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
2 Genady Точно, я проглючил. IDENT_CURRENT не годится. Спасибо что вразумили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2001, 07:37 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2001, 10:23 |
|
||
|
Люди ADO, ID достал! Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Давайте про "Деревья и блокировки" пообщаемся. Это тоже мой топик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2001, 10:26 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32008593&tid=1826263]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 366ms |

| 0 / 0 |
