Sql 使用另一个表中的值自动填充列
使用SQLManagementStudio,我有两个表,第一个表包含关于每个操作符的信息。包含数据输入的第二个表 第一个表将包含一个Sql 使用另一个表中的值自动填充列,sql,sql-server,ssms,Sql,Sql Server,Ssms,使用SQLManagementStudio,我有两个表,第一个表包含关于每个操作符的信息。包含数据输入的第二个表 第一个表将包含一个用户ID,例如“Ollie”及其相应的小时数,例如8。 当数据输入到第二个表中时,操作员名为“Ollie”,我需要在第二个表中的一个字段自动填充为“8” 下面是第二个表中的表数据,以及我所追求的内容的大致说明 CREATE TABLE [dbo].[tblTime]( [RecordID] [int] IDENTITY(1,1) NOT NULL,
用户ID
,例如“Ollie”及其相应的小时数,例如8。
当数据输入到第二个表中时,操作员名为“Ollie”,我需要在第二个表中的一个字段自动填充为“8”
下面是第二个表中的表数据,以及我所追求的内容的大致说明
CREATE TABLE [dbo].[tblTime](
[RecordID] [int] IDENTITY(1,1) NOT NULL,
[Operator] [nvarchar](50) NOT NULL,
[Timein] [decimal](10, 4) NOT NULL,
[UserBreak] [decimal](10, 4) NOT NULL,
[Timeout] [decimal](10, 4) NOT NULL,
[TotalTime] AS (([Timeout]-[Timein])-[Userbreak]),
[OperatorHours] AS (SELECT OperatorHours FROM tblUser t WHERE t.UserID = Operator),
不能对计算列使用子查询。您可以为此编写触发器
CREATE TRIGGER TriggerExample
ON TblTime
BEFORE INSERT, UPDATE
AS
Declare @operH int;
SELECT @operH = OperatorHours FROM tblUser t WHERE t.UserID = inserted.operator;
inserted.OperatorHours = @operH;
GO
不能对计算列使用子查询。您可以为此编写触发器
CREATE TRIGGER TriggerExample
ON TblTime
BEFORE INSERT, UPDATE
AS
Declare @operH int;
SELECT @operH = OperatorHours FROM tblUser t WHERE t.UserID = inserted.operator;
inserted.OperatorHours = @operH;
GO
我已经能够修改这个,几乎让它工作,ssms似乎不喜欢“之前”请检查我编辑的答案。在插入之前使用
尝试,更新尝试了该操作,不幸的是,ssms不喜欢BEFORE语句。它想要在之后,或者因为我已经能够修改它并且几乎使它工作,ssms似乎不喜欢“在”检查我编辑的答案。在插入之前使用尝试,更新尝试了该操作,不幸的是,ssms不喜欢BEFORE语句。它需要after,或者for,您可以通过定义一个返回值的函数来实现这一点。但是,不能将子查询包含为计算列。可以通过定义返回值的函数来实现。但是,不能将子查询包含为计算列。