Не удается повторно заполнить таблицу на сервере sql

У меня есть таблицы ниже, в которых я пытаюсь удалить свою запись и повторно заполнить ее после удаления, и она выдает ошибку, что я не могу повторно заполнить таблицу, говоря, что параметр 3 неверен. как видно, параметр 3 идет правильно, так как это переменная

Delete Table1
where Category = 'category'

Declare @NEXTIdentity int = 0
SELECT @NEXTIdentity = MAX(ID) + 1
FROM Table1

    
DBCC CHECKIDENT(Table1, Reseed, @NEXTIdentity)

Сообщение об ошибке

Сообщение 2560, уровень 16, состояние 9, строка 24
Неверный параметр 3 для этого оператора DBCC.

Я пытался явно установить переменную, которая работает

DBCC CHECKIDENT(Table1, Reseed, 1)

Каков результат SELECT MAX(ID) FROM Table1 после удаления?

Delta 22.11.2022 15:49

Вы используете столбец IDENTITY, потому что вам нужен уникальный номер, но вам все равно, что это такое. Перестаньте беспокоиться о том, чтобы сделать его «красивым» — нет необходимости в повторном заполнении.

Code Different 22.11.2022 15:51

@Delta32000 таблица пуста, удалены почти 5-6 строк, ничего не дает мне, так как таблица пуста, но для переменной NEXTIdentity установлено значение 1 после выполнения вышеуказанного оператора

kinnangiant 22.11.2022 15:54
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, вы можете передавать переменные в DBCC (по крайней мере, с моей conf: mssql 16)

пытаться :

Delete Table1
where Category = 'category'

Declare @NEXTIdentity int = 0
SELECT @NEXTIdentity = ISNULL(MAX(ID),0) + 1
FROM Table1

    
DBCC CHECKIDENT(Table1, Reseed, @NEXTIdentity)

Обратите внимание, что NULL + 1 = NULL

Да, вы правы, почему DBCC CHECKIDENT (Table1, Reseed, @NEXTIdentity) требует, чтобы переменная @NEXTIdentity была не нулевой, почему, поскольку sql не компилируется, кажется, что он компилирует функцию DBCC CHECKIDENT (Table1, Reseed , @NEXTIdentity) и заранее предупредить, что он не равен нулю

kinnangiant 22.11.2022 16:06

Какой у вас конфиг? версия? ...

Delta 22.11.2022 16:09

Моя версия сервера sql 13.0.6419.1, если это то, о чем вы спрашиваете, что такое конфигурация?

kinnangiant 22.11.2022 16:14

Если вы удаляете все из таблицы, что подразумевается, что это не так, то почему бы не просто TRUNCATE таблицу, которая также повторно заполняет IDENTITY, @kinnangiant ?

Thom A 22.11.2022 17:34

Не удаляя все, бывает, что удаляешь все из-за очень маленького набора данных «Удалить таблицу 1, где категория =« категория »»

kinnangiant 22.11.2022 17:58

Другие вопросы по теме