|
|
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте все! У меня вот такая проблемка: есть таблица в которой Primery Key автоматически инкрементируется при INSERTe. в эту таблицу я делаю инсерт при помощи Код: plaintext 1. 2. 3. как мне получить только что сгенерировашийся ID? Функции Last или Max не подоходят, потому что база данных мульиюзерская. Заранее благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 15:19 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
судя по всему у тебя СУБД это MS SQL наверное, нужно выполнить батч по ExecuteScalar Код: plaintext 1. подробнее в MSDN Retrieving Identity or Autonumber Values ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 15:34 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
Попробуй... Dim i As Integer = cmd. ExecuteScalar() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 15:52 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
-=LL=-Попробуй... Dim i As Integer = cmd. ExecuteScalar() и что по твоему должно вернуться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 16:07 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
-=LL=-Попробуй... Dim i As Integer = cmd. ExecuteScalar() не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 16:20 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
Стрсудя по всему у тебя СУБД это MS SQL наверное, нужно выполнить батч по ExecuteScalar Код: plaintext 1. подробнее в MSDN Retrieving Identity or Autonumber Values это нужно с DataSet оперировать, как я понял... в моем случае это не очень к месту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 16:21 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
авторФункции Last или Max не подоходят, потому что база данных мульиюзерская. Какая база??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 16:27 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
SELECT SCOPE_IDENTITY(); - можно выполить отдельной командой сразу после вставки, если в однлм баче сложно _______________________________________________________ Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 16:31 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
vladgrig авторФункции Last или Max не подоходят, потому что база данных мульиюзерская. Какая база??? MS SQL Server 2000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 16:47 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
авторMS SQL Server 2000 А почему "Функции Last или Max не подоходят"??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 16:52 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
vladgrig авторMS SQL Server 2000 А почему "Функции Last или Max не подоходят"??? наврено потомучто транзакции могут быть, блокировки там всякие:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 16:58 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
vladgrig авторMS SQL Server 2000 А почему "Функции Last или Max не подоходят"??? потому что пока я вожусь с макс value этот value может уже быть совсем другим value если другие юзера присоеденили data. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 17:02 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
Быть может по всякому - хочется услышать от автора: в чём затруднения?... P.S. SCOPE_IDENTITY() - на это блокировки и транзакции не распространяются??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 17:04 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
ищи по запросу - две строки не могут же быть одинаковыми (различия только в id)... Сделал инсерт и выполнил запрос на выборку вставленной строки строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 17:08 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
vladgrigБыть может по всякому - хочется услышать от автора: в чём затруднения?... P.S. SCOPE_IDENTITY() - на это блокировки и транзакции не распространяются??? BOL SCOPE_IDENTITY and @@IDENTITY will return last identity values generated in any table in the current session. However, SCOPE_IDENTITY returns values inserted only within the current scope; @@IDENTITY is not limited to a specific scope. тоесть мы видим только то, что сами вставили, а как уже правильно говорил avoda, пока мы через max или last будем пытаться вытащить значение, в это же время кто-то быстрее успеет вставить еще одну строку, и эту функции вернут неверные значения. Мультиюзерная среда однако;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 17:14 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
Так чего у него не получается??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 17:26 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
vladgrigТак чего у него не получается??? я так понимаю не знает как получить SCOPE_IDENTITY или @@IDENTITY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 17:30 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
И я незнаю - объясни нам пожалуйста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 17:37 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
Стрсудя по всему у тебя СУБД это MS SQL наверное, нужно выполнить батч по ExecuteScalar Код: plaintext 1. подробнее в MSDN Retrieving Identity or Autonumber Values может дашь примерчик? Чет в микисофтском прмере не разберусь, тем более что никогда не делал бачи. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 17:40 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
vladgrigИ я незнаю - объясни нам пожалуйста... объясняю: как получить Value от только что присоеденёного датасет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 17:44 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
авторобъясняю: как получить Value от только что присоеденёного датасет.Не зацикливайся под вечер... то что хочешь ты я уже понял... Лиман Артёмя так понимаю не знает как получить SCOPE_IDENTITY или @@IDENTITYИ я незнаю - объясни нам пожалуйста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 17:57 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
А почему бы процедуру не использовать? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 17:57 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
AngelloА почему бы процедуру не использовать? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. подходит. Как мне его считать в VB.NET application? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 18:01 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
vladgrigИ я незнаю - объясни нам пожалуйста... объясняю на примере Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 18:07 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
Angello Код: plaintext 1. это конечно тоже вариант, только я бы все же советовал использовать вместо @@Identity SCOPE_IDENTITY() так как при инсерте может сработать триггер, который в свою очередь также проведет вставку, соответсвенно @@Identity вернет не наш Identity, а чужой. Эта один из подводных камней при программировании на TSql, так как на момент написания хранимки такого триггреа может и не быть и всё будет работать хорошо. И хорошо еще если мы одни программируем базу, а если коллективная разработка - я добавлю триггер, ты ничего о не знать не будешь, но логика твоей хранимки испортится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 18:12 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
avoda AngelloА почему бы процедуру не использовать? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. подходит. Как мне его считать в VB.NET application? Добавляете функцию, которая принимает необходимые параметры и возвращает ID в случае успешного добавления записи Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 18:21 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
Лиман Артём Angello Код: plaintext 1. это конечно тоже вариант, только я бы все же советовал использовать вместо @@Identity SCOPE_IDENTITY() так как при инсерте может сработать триггер, который в свою очередь также проведет вставку, соответсвенно @@Identity вернет не наш Identity, а чужой. Эта один из подводных камней при программировании на TSql, так как на момент написания хранимки такого триггреа может и не быть и всё будет работать хорошо. И хорошо еще если мы одни программируем базу, а если коллективная разработка - я добавлю триггер, ты ничего о не знать не будешь, но логика твоей хранимки испортится... Большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 18:30 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
Angello avoda AngelloА почему бы процедуру не использовать? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. подходит. Как мне его считать в VB.NET application? Добавляете функцию, которая принимает необходимые параметры и возвращает ID в случае успешного добавления записи Код: plaintext 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. Большое спасибо!!!!!!!!!!!!!!!!!!!!!!!!! Супер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 18:31 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
<off> из-за чего весь сыр-бор разгорелся ??? извините за плохой стиль, но это всего 3 строки без ХП Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 19:45 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
Ну вот, пришёл Кузя и, как всегда, всё расставил на свои места... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 22:27 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
кузя<off> из-за чего весь сыр-бор разгорелся ??? извините за плохой стиль, но это всего 3 строки без ХП Код: plaintext 1. 2. А с Oracle-ом так вероятно? INSERT INTO T4 (nm) VALUES(?) returning ID; cmd.Parameters.Add("привет"); А с MsAccess? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2007, 06:51 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
автор MsAccess? там вроде тоже можно Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2007, 11:23 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
Не, там такого понятия нету. Есть последовательности, из которых берутся значения триггерами Before Insert Но результат тот же) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2007, 11:39 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
cuntНе, там такого понятия нету. Есть последовательности, из которых берутся значения триггерами Before Insert Но результат тот же) http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q232144 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2007, 11:49 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
cuntНе, там такого понятия нету. Есть последовательности, из которых берутся значения триггерами Before Insert Но результат тот же) в аксессе? триггерами?!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2007, 12:05 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
Да не не. Чего все испугались. я имел ввиду Oracle. Если будет интерестно, способ нашел: (Единственный - надежный для Oracle) Надо начать транзакцию вставить строку извлечть max(id) from mytable прокоммитеть транзакцию может быть тормозно будет (для кого-то) но в некоторых случаях лучше уж так, чем совсем никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2007, 12:42 |
|
||
|
как получить Auto Incerment Value?
|
|||
|---|---|---|---|
|
#18+
cuntДа не не. Чего все испугались. я имел ввиду Oracle. Если будет интерестно, способ нашел: (Единственный - надежный для Oracle) Надо начать транзакцию вставить строку извлечть max(id) from mytable прокоммитеть транзакцию может быть тормозно будет (для кого-то) но в некоторых случаях лучше уж так, чем совсем никак. че-то ваш способ не алё. я с ораклом не работал, но вроде читал/слышал, что аналог идентити там можно получить перед вставкой, а не после, как в скуль-сервере. ораклисты, так ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2007, 12:52 |
|
||
|
|

start [/forum/topic.php?all=1&fid=17&tid=1352553]: |
0ms |
get settings: |
9ms |
get forum list: |
24ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 337ms |

| 0 / 0 |
