gpt4 book ai didi

sql - 如何在 View 中将列指示为 NOT NULL?

转载 作者:行者123 更新时间:2023-12-04 11:46:05 25 4
gpt4 key购买 nike

我正在尝试使用 View 来创建使用 View 的 ADO.NET 实体。但是,该 View 没有一个非空的列。

我想到的一件事是在 View 上创建一个 NOT NULL 列以用作 View 的“主键”。这有效,但该字段仍报告为 NULL。

有没有办法强制或欺骗 SQL Server 将该 View 列报告为 NOT NULL?

将 View 想象为:

CREATE VIEW vwSample WITH SCHEMABINDING
AS
SELECT ID = convert(uniqueidentifier, /* some computed value */)
,Field1
,Field2
,Field3
FROM tbSample

Note: Before saying that I can edit the entity XML to do such thing, I'm asking this because I have a VERY large number of entities to be created this way.

最佳答案

首先,回答你的问题:

你不想使用 newid()确定您的 id 字段,因为每次使用 View 时都会重新计算。确实,数据完整性是最大的问题。

select
row_number() over (order by someStaticAndUniqueFieldLikeCreateDate) as ID,
Field1,
Field2,
Field3
from
tblA
order by
someStaticAndUniqueFieldLikeCreateDate

这仅适用于您对具有一致排序的字段进行排序,该字段将追加新行,例如 CreateDate field 。如果您没有此 ID,则该 ID 可能会更改。现在,如果您在运行时只需要这些 ID,并且没有任何东西可以永久链接到它们, row_number会非常热衷。如果您有不可靠的数据,则无法获得可靠的 ID 字段,除非您创建一个额外的表并使用触发器来填充它。

其次,要小心 with schemabinding .如果用作杂物很危险。请记住,一旦创建 View with schemabinding ,您根本无法更改任何基础表的架构。这意味着您不能制作 varchar(50) A栏 varchar(100)无需删除并重新添加所有具有 with schemabinding 的 View 启用。是的,您可以索引模式绑定(bind)的 View ,但在锁定、库存和桶之前肯定需要考虑权衡。

关于sql - 如何在 View 中将列指示为 NOT NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1281826/

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