gpt4 book ai didi

sql - 而不是抛出错误类型 block 执行成功

转载 作者:行者123 更新时间:2023-12-02 16:50:18 25 4
gpt4 key购买 nike

最近我读到了有关 UDT 的内容。我已经创建了一种类型,但我对该类型有疑问。请查看以下内容

---drop type ssn
CREATE TYPE ssn
FROM VARCHAR(11) NOT NULL;

DECLARE @er ssn;

IF Object_id('TEMPDB.DBO.#ter', 'U') IS NOT NULL
DROP TABLE #ter;

CREATE TABLE #ter (
PERIOD_SID INT
,PERIOD_QUAR VARCHAR(10) PRIMARY KEY (PERIOD_SID)
)

INSERT INTO #ter (
PERIOD_SID
,PERIOD_QUAR
)
SELECT *
FROM (
VALUES (
(1)
,(@er)
)
) V(p, q)

我创建了一个 varchar(11) 不为空的 ssn 类型,并运行了上述逻辑,它执行成功 enter image description here

根据我的假设,它应该抛出一个错误。

我需要知道为什么上面的逻辑能够成功运行。

编辑

根据建议,我已将此 udt 添加为 AQL 服务器中的列,因为在 Oracle 中我们可以创建一个包含与 UDT 类似的集合的列

IF Object_id('TEMPDB.DBO.#ter1', 'U') IS NOT NULL
DROP TABLE #ter1;

CREATE TABLE #ter1 (
PERIOD_SID INT
,PERIOD_QUAR ssn PRIMARY KEY (PERIOD_SID)
)

enter image description here

创建表时遇到错误,提示不存在此类数据类型“ssn”

提前致谢

最佳答案

这是reason

The null_type parameter only defines the default nullability for this data type. If nullability is explicitly defined when the alias data type is used during table creation, it takes precedence over the defined nullability.

这取自sp_addtype,但它应该与CREATE TYPE 的情况相同。 sp_addtype 还用于创建用户定义的数据类型

就您的情况而言,我们无法创建不接受 NOT NULL 值的变量。所以我认为该属性已被覆盖

关于sql - 而不是抛出错误类型 block 执行成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44492620/

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