谢谢你的关注。我正在尝试编写一个SQL Server触发器,当添加包含日期信息的新记录时,它会将星期几添加到DayOfWeek列中。下面是我的表,按列顺序排列:
餐桌:
FoodName **varchar(20)**
CategoryID (FK) **int**
Price **smallmoney**
StoreID (FK) **int**
Date **datetime**
DayOfWeek **varchar(9)**
ShopperID (FK) **int**
Week **int**
下面是我写的触发器:
-- Create a trigger to update day of the week when a record is inserted
CREATE TRIGGER DOW
ON Food
FOR INSERT
AS
BEGIN
-- Declare a variable to hold the date ID
DECLARE @dateID DATETIME
-- Get the date from the new record and store it in @dateID
SELECT @dateID = Date FROM Food
-- Insert day of the week based on the inserted date
INSERT INTO Food (DayOfWeek)
SELECT DATENAME(dw, @dateID)
END
GO
SQL Server似乎接受该过程,但当我运行另一个过程以插入新记录时,收到以下错误:
消息515,级别16,状态2,程序道,第8行批量开始第21行
无法将值NULL插入到表*的列'Week‘中;列不允许为NULL。插入失败。
我根本不确定为什么这个触发器会影响“Week”一栏。代码应采用为日期输入的值,并使用DATENAME(dw,...)函数返回星期几,它应该放到DayOfWeek列中。我已经编写了一个存储过程,它接受日期作为输入,并将相应的星期几插入到记录中,它工作得很好,但是这个触发器似乎不想合作。我被难住了!
https://stackoverflow.com/questions/52571058
复制相似问题