You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中IDENTITY起始值异常与首字母大写约束问题求助

SQL Server 两个问题的解决办法

一、IDENTITY自增起始值异常(首条数据emp_id为5)

原因

标识列的种子值可能因之前的插入、删除操作,或数据库重启时的缓存问题,导致当前标识值被跳过,无法按预期从0/1开始。

解决步骤

  1. 查看当前表的标识值状态,确认异常情况:
DBCC CHECKIDENT('employee', NORESEED);

执行后会返回当前标识种子和当前标识值,验证是否偏离预期。

  1. 重置标识种子,让下一条插入的emp_id从1开始:
DBCC CHECKIDENT('employee', RESEED, 0);

因为表设置的是IDENTITY(0,1),重置种子为0后,下一次插入的记录会自动使用1作为emp_id。如果后续希望默认从1开始自增,也可以删除表后重新创建,将IDENTITY(0,1)改为IDENTITY(1,1)。

二、首字母大写CHECK约束无法插入正常姓名

原因

原约束CHECK (first_name LIKE UPPER(LEFT(first_name, 1)))仅校验了首字母,但未允许后续字符存在——LIKE默认匹配完全等于首字母的字符串,因此只能输入单个大写字母,无法插入完整姓名。

解决步骤

方法1:重新创建表(适合表中无数据的场景)

修改CHECK约束,在首字母后添加%以匹配任意后续字符:

CREATE TABLE employee
(
    emp_id INT PRIMARY KEY IDENTITY(1,1) NOT NULL, -- 直接设置从1开始自增
    first_name VARCHAR(20) 
        CHECK (first_name LIKE UPPER(LEFT(first_name, 1)) + '%') NOT NULL,
    last_name VARCHAR(40) 
        CHECK(last_name LIKE UPPER(LEFT(last_name, 1)) + '%') NOT NULL,
    birth_date DATE NOT NULL,
    sex char(1) CHECK (sex IN ('M','F')) NOT NULL,
    salary MONEY NOT NULL,
    super_id INT DEFAULT NULL,
    branch_id INT DEFAULT NULL
);

方法2:修改已有表的约束(适合表中已有数据的场景)

  1. 查询原约束的名称:
SELECT name FROM sys.check_constraints WHERE parent_object_id = OBJECT_ID('employee');

找到对应first_name和last_name的约束名称(格式类似CK__employee__first___XXXXXX)。

  1. 删除旧约束:
ALTER TABLE employee DROP CONSTRAINT CK__employee__first___XXXXXX; -- 替换为实际约束名
ALTER TABLE employee DROP CONSTRAINT CK__employee__last___XXXXXX; -- 替换为实际约束名
  1. 添加新的正确约束:
ALTER TABLE employee ADD CONSTRAINT CK_employee_first_name 
    CHECK (first_name LIKE UPPER(LEFT(first_name, 1)) + '%');
ALTER TABLE employee ADD CONSTRAINT CK_employee_last_name 
    CHECK (last_name LIKE UPPER(LEFT(last_name, 1)) + '%');

验证插入

修改完成后,执行插入语句:

INSERT INTO employee(first_name, last_name, birth_date, sex, salary)
VALUES ('David', 'Wallace', '1967-11-17', 'M', 250000);

此时可正常插入数据,且emp_id会从1开始自增。

内容的提问来源于stack exchange,提问作者Jakub Mikołajczak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 18:43:21