加入收藏 | 设为首页 | 会员中心 | 我要投稿 海南站长网 (https://www.0898zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Sql server 如何为在SQL Server中创建的视图获取上具有标识指定

发布时间:2022-10-14 06:00:58 所属栏目:MsSql教程 来源:转载
导读: Sql server 如何为在SQL Server中创建的视图获取上具有标识指定的列?
sql-server
Sql server 如何为在SQL Server中创建的视图获取上具有标识指定的列?,sql-server,Sql Server,我创建了一

Sql server 如何为在SQL Server中创建的视图获取上具有标识指定的列?

sql-server

Sql server 如何为在SQL Server中创建的视图获取上具有标识指定的列?,sql-server,Sql Server,我创建了一个视图,其中我的一列是主键。在该字段中,标识指定也设置为“是”。当我打开该视图时,它不包含主键字段。当我将标识指定设置为“否”时,则只有我的视图包含主键字段。原因是什么是否存在要将标识设置为否的sql查询?我的看法是:create view userAccounts as select user\u id、br\u id、user\u name、role\u id、,,电子邮件,已创建,已更新,来自用户帐户的状态此处用户id未显示在我的视图中。我无法复制OP描述的行为。在

我创建了一个视图,其中我的一列是主键。在该字段中,标识指定也设置为“是”。当我打开该视图时,它不包含主键字段。当我将标识指定设置为“否”时,则只有我的视图包含主键字段。原因是什么

是否存在要将标识设置为否的sql查询?

我的看法是:

create view userAccounts as select user\u id、br\u id、user\u name、role\u id、,
,电子邮件,已创建,已更新,来自用户帐户的状态

此处用户id未显示在我的视图中。我无法复制OP描述的行为。在下面的SQL中,对

v1

v2

的两个查询都返回

ID

c

列。如果该列不再显示在视图中,则表示视图的定义正在更改

CREATE TABLE t1 (ID int PRIMARY KEY CLUSTERED, c char(1));
CREATE TABLE t2 (ID int IDENTITY(1,1) PRIMARY KEY CLUSTERED, c char(1));
GO
CREATE VIEW v1 AS
SELECT *
FROM t1; 
GO
CREATE VIEW v2 AS
SELECT *
FROM t2; 
GO
INSERT INTO t1 (ID,c)
VALUES (1,'a');
SELECT *
FROM v1;
INSERT INTO t2 (c)
VALUES ('a');
SELECT *
FROM v2;
GO
DROP VIEW v1;
DROP VIEW v2;
DROP TABLE t1;
DROP TABLE t2;

请注意,不能将现有列更改为

标识

列(或将其删除)。如果您在SSMS中更改属性,它实际上是在创建一个新表,复制数据,删除旧表mssql 使用视图,然后重命名新表。

是否可以互换使用“视图”和“表”这两个词?视图只是由查询定义的虚拟表。您没有在视图上定义主键。在表上,标识本身不是主键。

IDENTITY

属性和

PRIMARY KEY

约束是两个不同的东西,虽然它们通常应用于同一列,但不必如此。包括视图的DDL。如果列的

IDENTITY

属性设置为yes或no,则视图的定义不会根据更改。

(编辑:海南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!