【问题标题】:SQL Server: the identity column must be of data type int, bigint, smallint, tinyint, decimal, or numericSQL Server:标识列的数据类型必须为 int、bigint、smallint、tinyint、decimal 或 numeric
【发布时间】:2018-02-14 07:02:11
【问题描述】:

我使用 SQL Server 2017 Management Studio,并尝试创建加密列(始终加密任务),但出现错误

标识列的数据类型必须是 int、bigint、smallint、tinyint、decimal 或小数位数为 0、未加密且限制为不可为空的数字。

我的桌子是:

create table testDB.dbo.Login
(
    ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    Username varchar(20) NOT NULL UNIQUE,
    Password varchar(128) NOT NULL,
    Email varchar(100) Not Null UNIQUE
);

create table testDB.dbo.Admin
(
    ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    Admin INT NOT NULL FOREIGN KEY REFERENCES testDB.dbo.Login(ID)
);

我该如何解决这个问题?

【问题讨论】:

  • sql server 或其他平台引发的错误?
  • 您为 IDENTITY 字段设置了哪种数据类型?在上面的例子中,它只是“int”,所以它不应该引发任何错误。
  • @HasanFathi sql server 引发的错误
  • @Mittal 我使用 SQL-Server 2017
  • 所以,您尝试加密身份列

标签: sql-server


【解决方案1】:

对于格式标识密钥试试这个:

“padded_id”是我在计算列示例中使用的名称。

create table table
(
   id int IDENTITY(1,1) NOT NULL,
   padded_id AS (right('0000000000' + CONVERT(varchar(10),id),10)) PERSISTED 
    NOT NULL,
   other columns....
)

【讨论】:

    【解决方案2】:

    尝试加密保留标识列和外键引用列的其他列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-26
      • 1970-01-01
      • 2011-10-13
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      相关资源
      最近更新 更多