小编age*_*r85的帖子

为什么这个 UDF 在这个检查约束中不起作用?

I\xe2\x80\x99m 尝试使用 UDF 作为在检查约束内使用 SELECT 命令的替代方法。我需要对报告表施加约束,以确保signedBy字段是人员记录的PK,该人员记录在auth表中存在一条记录,其人员编号和authType为8(这表明他们有权签署报告)。我的 UDF 应该检查这样的身份验证记录是否存在并返回一个位(如果不存在则返回 0,如果存在则返回 1)。我正在开发 SQL Server Express Edition。

\n

我几乎在SQLFiddle重新创建了我的情况:

\n
CREATE TABLE personnel(\n    personnel INT IDENTITY(1, 1) NOT NULL,\n    firstName VARCHAR(20), \n    lastName VARCHAR(20),\n    login VARCHAR(20) DEFAULT NULL,\n    title varchar(20) DEFAULT NULL,\n    initials varchar(4) NOT NULL,\n    startDate DATE DEFAULT GETDATE(),\n    CONSTRAINT PkPersonnel PRIMARY KEY(personnel),\n    CONSTRAINT UqPersonnelFirstNameLastName UNIQUE(firstName, lastName),\n    CONSTRAINT UqPersonnelInitials UNIQUE(initials)\n);\nCREATE TABLE authType(\nauthType INT NOT NULL IDENTITY(1, 1),\nauthName varchar(50)\nCONSTRAINT PkAuthTypeAuthType PRIMARY KEY(authType)\n);\nCREATE TABLE auth(\nauth INT NOT NULL IDENTITY(1, 1),\npersonnel INT NOT …
Run Code Online (Sandbox Code Playgroud)

sql-server functions check-constraints

8
推荐指数
1
解决办法
796
查看次数

为什么 SQL Server 会删除传递给 SMALLDATETIME 字段的值的秒数?

我在用着

Microsoft SQL Server 2019 (RTM-CU22) (KB5027702) - 15.0.4322.2 (X64)
2023 年 7 月 27 日 18:11:00 版权所有 (C) 2019 Microsoft Corporation Express Edition(64 位),适用于 Windows 10 Pro 10.0(内部版本 19045: )

我有一张用它创建的表

CREATE TABLE yokogawaReading(
yokogawaReading INTEGER NOT NULL IDENTITY (1, 1),
readingDate SMALLDATETIME not null,
celsiusTemperature1 DECIMAL (4,2),
relativeHumidity1 DECIMAL (5,3),
celsiusTemperature2 DECIMAL (4,2),
relativeHumidity2 DECIMAL (5,3)
);
Run Code Online (Sandbox Code Playgroud)

每当我尝试插入字段值包含readingDate非零秒值的记录时,例如,

EXEC sp_set_session_context @key = N'readingDateTime', @value = '2023/11/14 11:09:30';

EXEC sp_set_session_context @key = N't1', @value =20.027777777777777777777777778;

EXEC sp_set_session_context …
Run Code Online (Sandbox Code Playgroud)

sql-server datetime

3
推荐指数
1
解决办法
603
查看次数