2015-12-02 8 views
0

У меня есть две колонки, одна из них является t1 (int тип), который является автоматическое приращение, а другой столбец t2 (char тип)Как сбросить автоматический столбец инкремента в SQL Server

Я пытаюсь выполнить вставку запрос

INSERT into test(t2) values('test1'); 
INSERT into test(t2) values('test2'); 
INSERT into test(t2) values('test3'); 

посмотреть на результат ниже

t1 | t2 
---------- 
1 | test1 
2 | test2 
3 | test3 

Я хочу написать тр igger, что если я пытаюсь выполнить запрос на удаление, автоматическое приращение сбрасывается

Delete from t1 
where t1 = 2; 

Я хочу, чтобы триггер, который возвращает этот результат:

t1 | t2 
---------- 
1 | test1 
2 | test3 

Пожалуйста, дайте мне знать, лучший способ!

Я жду вашего ответа

Благодарности

+1

Autoidentity не вписывается в сценарий вы описали, потому что вы не можете изменить значение столбца, имеющее autoidentity. Лучше удалить autoidentity из столбца 't1' и пересчитать его значения в insert/delete с помощью триггеров. –

+1

Плохой план. если вы заботитесь о числовом значении столбцов идентификации, вы используете их неправильно. Это похоже на простой «ROW_NUMBER() OVER (ORDER BY t1)», включенный, когда вы * выбираете *, эти данные предоставят вам результаты без необходимости повторять назначение значений столбцов. –

ответ

-1

Найти наибольшее число в поле автоматического приращения Чтобы найти наибольшее число, выполните следующую команду SQL:

SELECT MAX(`column`) FROM `table` ; 
Replace 'column' with the name of the auto incrementing column. Replace table with the name of the table. 

Сброс поле автоматического приращения Следующим шагом будет взятие числа, которое вы получаете от первой команды и автоматического увеличения оттуда. Таким образом, добавьте к этому номеру и выполнить следующую команду:

ALTER TABLE `table` AUTO_INCREMENT = number; 
Replacing 'number' with the result of the previous command plus one and  replacing table with the table name. 

Если вы удалили все строки в таблице, то вы могли бы выполнить команду Alter Table и сбросить его в 0.

0

Вы можете использовать следующий запрос для сброса номера вашего авто Increment

ALTER TABLE table_name AUTO_INCREMENT = value; 

ПРИМЕЧАНИЕ: значение приращения авто должно быть больше или равно максимальному значению столбца автоинкрементного.

Вы можете проверить более here

+0

Это не работает на SQL-сервере. Ссылка, которую вы указали, была для MySQL –

Смежные вопросы