Вы можете использовать проверить ограничение , чтобы убедиться, что условие выполнено:
DROP TABLE IF EXISTS [dbo].[StackOverflow];
CREATE TABLE [dbo].[StackOverflow]
(
[Col01] INT
,CONSTRAINT [CH_StackOverflow] CHECK ([Col01] < 1 OR [Col01] > 10000)
);
INSERT INTO [dbo].[StackOverflow] ([Col01])
VALUES (-1);
INSERT INTO [dbo].[StackOverflow] ([Col01])
VALUES (1);
Если столбец должен заполняться автоматически, вы можете использовать IDENTITY column вот так:
DROP TABLE IF EXISTS [dbo].[StackOverflow];
CREATE TABLE [dbo].[StackOverflow]
(
[Col01] INT IDENTITY(10001, 1)
,[Col02] NVARCHAR(12)
);
INSERT INTO [dbo].[StackOverflow] ([Col02])
VALUES ('x');
INSERT INTO [dbo].[StackOverflow] ([Col02])
VALUES ('y');
SELECT *
FROM [dbo].[StackOverflow];
В последнее время вы можете использовать SET IDENTITY_INSERT , чтобы добавить свои специальные записи.
Если вам нужно больше контроля, вы можете использовать триггер - вместо / после INSERT и UPDATE. Вы можете добавить туда больше logi c - отклонить ввод пользователя или преобразовать ввод пользователя. Но это кажется излишним, и вам нужно быть осторожным при создании триггеров - всегда обрабатывайте строки партиями, чтобы не сильно влиять на производительность CRUD.