gpt4 book ai didi

sql - SQL Server 中一张表可以有两个标识列吗?

转载 作者:行者123 更新时间:2023-12-03 21:28:31 27 4
gpt4 key购买 nike

我正在尝试使两列自动递增,但此列显示错误 [user_id] as id + 0 PRIMARY KEY NOT NULL

Only UNIQUE or PRIMARY KEY constraints can be created on computed columns

我想做的是,如果 id = 1,也让 user_id = 1。

CREATE TABLE [dbo.TBL_TXN_USER]
(
[id] int NOT NULL IDENTITY(1,1),
[user_id] as id + 0 PRIMARY KEY NOT NULL ,
[username] varchar(150) NOT NULL,
[fullname] varchar(150) NOT NUll,
[pwd] varchar(50) NOT NUll,
[email] varchar(150) NOT NULL,
[mobile] varchar(150) NOT NULL,
[designation] varchar(150) NOT NULL,
[deleted] int NULL,
[created_date] datetime NULL,
[creator_user_id] int NULL,
[changed_date] datetime NULL,
[changer_user_id] int NULL,
[add_content] int NULL,
[edit_content] int NULL,
[delete_content] int NULL,
[manage_user] int NULL,
[view_log] int NULL,
)

[user_id] 有什么问题?如何解决?

最佳答案

错误消息是因为您在计算列上放置了 NOT NULL 约束。
在 sql server 2012 上,完整的错误消息是:

Only UNIQUE or PRIMARY KEY constraints can be created on computed columns, while CHECK, FOREIGN KEY, and NOT NULL constraints require that computed columns be persisted.

这是一个工作脚本(我更改了表名):

CREATE TABLE dbo.[TBL_TXN_USER]
(
[id] int NOT NULL IDENTITY(1,1),
[user_id] as id + 0 persisted not null primary key,
[username] varchar(150) NOT NULL,
[fullname] varchar(150) NOT NUll,
[pwd] varchar(50) NOT NUll,
[email] varchar(150) NOT NULL,
[mobile] varchar(150) NOT NULL,
[designation] varchar(150) NOT NULL,
[deleted] int NULL,
[created_date] datetime NULL,
[creator_user_id] int NULL,
[changed_date] datetime NULL,
[changer_user_id] int NULL,
[add_content] int NULL,
[edit_content] int NULL,
[delete_content] int NULL,
[manage_user] int NULL,
[view_log] int NULL,
);
GO

我对这个问题有几点看法。
- 一个带有固定公式的计算字段,其中静态值作为主键而不是 id 本身是一种资源浪费:2 个字段之一不应该存在
- 带有系统函数名称 (user_id) 的字段是我会不惜一切代价避免的。
- 这个问题看起来像是试图为一个隐藏的问题制定一个解决方案(计算字段作为 id)。

关于sql - SQL Server 中一张表可以有两个标识列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33663391/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com