Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Обнулить счетчик.  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 620
Можно ли в триггере AfterDelete обнулить счетчик у таблицы???? (если все записи удалили)
5 мар 13, 14:59    [14014879]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
virus_system
все записи удалили
может, использовать TRUNCATE ?
5 мар 13, 15:01    [14014902]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
virus_system
Можно ли в триггере AfterDelete обнулить счетчик у таблицы???? (если все записи удалили)

Зависит от того, что вы понимаете под "счётчиком у таблицы".
5 мар 13, 15:03    [14014918]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 620
Гость333
virus_system
Можно ли в триггере AfterDelete обнулить счетчик у таблицы???? (если все записи удалили)

Зависит от того, что вы понимаете под "счётчиком у таблицы".


автоинкрементый столбец (в данном случае езе и id)
5 мар 13, 15:05    [14014942]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
Glory
Member

Откуда:
Сообщений: 104760
virus_system
автоинкрементый столбец

Для этого текущему пользователю придется иметь существенные права.
5 мар 13, 15:07    [14014954]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 620
Гость333
virus_system
Можно ли в триггере AfterDelete обнулить счетчик у таблицы???? (если все записи удалили)

Зависит от того, что вы понимаете под "счётчиком у таблицы".


tuncate??? наверно нет... япросто хочу реализовать автоматическое обнуление автоинкремента, когда пользователь удалит все записи
5 мар 13, 15:08    [14014957]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 620
Glory
virus_system
автоинкрементый столбец

Для этого текущему пользователю придется иметь существенные права.


вот эту реализацию???? DBCC CHECKIDENT (имя таблицы, RESEED, 0)
5 мар 13, 15:09    [14014967]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
Glory
Member

Откуда:
Сообщений: 104760
virus_system
вот эту реализацию???? DBCC CHECKIDENT (имя таблицы, RESEED, 0)

И на эту и на truncate.
5 мар 13, 15:10    [14014972]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 620
Glory
virus_system
вот эту реализацию???? DBCC CHECKIDENT (имя таблицы, RESEED, 0)

И на эту и на truncate.


т.е вариантов особых нет? только админу базы периодически как то обнулят (что он естественно делать не будет)
5 мар 13, 15:13    [14014992]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
virus_system
Glory
пропущено...

Для этого текущему пользователю придется иметь существенные права.


вот эту реализацию???? DBCC CHECKIDENT (имя таблицы, RESEED, 0)
Всё это относится не к DML, а к DDL.
Поэтому неудивительно, что права на эти операции совсем другие.
Такие же, как на ALTER TABLE, например
5 мар 13, 15:14    [14014996]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
virus_system
Glory
пропущено...

И на эту и на truncate.


т.е вариантов особых нет? только админу базы периодически как то обнулят (что он естественно делать не будет)
И смысла-то в этом особого нет
5 мар 13, 15:16    [14015001]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
virus_system
т.е вариантов особых нет?


А они нужны, эти варинты? Что случится такого, если автоинкремент будет не с 1ого?
5 мар 13, 15:17    [14015008]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
Glory
Member

Откуда:
Сообщений: 104760
virus_system
т.е вариантов особых нет? только админу базы периодически как то обнулят (что он естественно делать не будет)

админ - это не обязательно человек, который вручную должен что-то делать
Это может быть робот, тупо выполняющий регламентные операции.
5 мар 13, 15:19    [14015017]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 620
ну а все таки можно написать как то так?
create trigger tr1
on table
after delete
begin
   if (not exists(select top1 from table))
     DBCC CHECKIDENT (table, RESEED, 0)    --и если можно? то возможно здесь проверить как то права пользователя на выполнение этой операции, и если он этого не могет то не выполнять ее
end
5 мар 13, 15:25    [14015059]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
Glory
Member

Откуда:
Сообщений: 104760
virus_system
ну а все таки можно написать как то так?

Написать - можно.

virus_system
и если можно? то возможно здесь проверить как то права пользователя на выполнение этой операции, и если он этого не могет то не выполнять ее

Права необходимые для выполнения DBCC CHECKIDENT описаны в хелпе в разделе permissions
5 мар 13, 15:29    [14015081]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
virus_system
ну а все таки можно написать как то так?
create trigger tr1
on table
after delete
begin
   if (not exists(select top1 from table))
     -- а теперь подумайте, что будет, если в этот момент в другой сессии будет сделана вставка в таблицу
     DBCC CHECKIDENT (table, RESEED, 0)
end

Ваше "как-то так" неверно работает в многопользовательском окружении.
Да и вообще непонятно — с какой целью вы это делаете?
5 мар 13, 15:33    [14015116]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34621
virus_system
Glory
пропущено...

И на эту и на truncate.


т.е вариантов особых нет? только админу базы периодически как то обнулят (что он естественно делать не будет)


А нафига это надо вообще? Тебе не все равно, какой будет следующий идентификатор? 1 или 1миллион, какая разница? Он только уникальным обязан быть.
5 мар 13, 17:56    [14016141]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
MasterZiv
Он только уникальным обязан быть.

Если речь об identity, то не обязательно уникальным.
5 мар 13, 18:31    [14016282]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
MasterZiv
virus_system
пропущено...


т.е вариантов особых нет? только админу базы периодически как то обнулят (что он естественно делать не будет)


А нафига это надо вообще? Тебе не все равно, какой будет следующий идентификатор? 1 или 1миллион, какая разница? Он только уникальным обязан быть.
Ну как вы все не понимаете, красивенько же, когда открываешь табличку, а там всё с единички нумеруется :)
5 мар 13, 21:25    [14016680]     Ответить | Цитировать Сообщить модератору
 Re: Обнулить счетчик.  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 620
ну мне то все равно, просто спросил для общего развития. вдруг я что то не знал.
Просто думал, как то логично, когда табличка полностью чистится инкремент тоже обнуляется....
6 мар 13, 07:45    [14017376]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить