Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在表中存储操作的时间戳_Sql_Sql Server_Sql Server 2008_Sql Server 2005_Sql Server 2012 - Fatal编程技术网

Sql 在表中存储操作的时间戳

Sql 在表中存储操作的时间戳,sql,sql-server,sql-server-2008,sql-server-2005,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2005,Sql Server 2012,我有一个疑问: 更改进程spbadge @周号nvarchar255 像 开始 更新pointsbadge 设置 badge1=当WeeklyHoursloged>='40'时的情况,然后1 else 0结束, badge2=当WeeklyHoursLogged=50且WeeklyHoursLogged=55且WeeklyHoursLogged=60时,则为“1”,否则为0; end如果满足您的要求,请使用以下代码检查:您可以根据表结构和数据调整查询 -徽章点信息 CREATE TABLE p

我有一个疑问:

更改进程spbadge @周号nvarchar255 像 开始 更新pointsbadge 设置 badge1=当WeeklyHoursloged>='40'时的情况,然后1 else 0结束, badge2=当WeeklyHoursLogged=50且WeeklyHoursLogged<55时,则为“1”,否则为0结束, badge4=当WeeklyHoursLogged>=55且WeeklyHoursLogged<60时,则为“1”,否则为0结束, badge5=当WeeklyHoursloged>=60时,则为“1”,否则为0;
end如果满足您的要求,请使用以下代码检查:您可以根据表结构和数据调整查询

-徽章点信息

CREATE TABLE pointsBadge(EmployeeName VARCHAR(50), EmployeeID INT, badge1 INT, badge2 INT, badge3 INT, badge4 INT, badge5 INT)
INSERT INTO pointsBadge VALUES 
('Lyka', 1122, 1, 1, 0, 0, 0),
('Brinda', 2233, 0, 0, 0, 0, 0),
('Anil', 34, 1, 1, 0, 0, 1)
-用于存储具有当前时间戳的员工徽章数据的新表

CREATE TABLE employee_badge(id INT IDENTITY(1,1), employee_id INT, badge_id INT, earned_on DATETIME)
-徽章信息表

CREATE TABLE #badges(BadgeId INT IDENTITY(1, 1), BadgeName VARCHAR(50))
INSERT INTO #badges VALUES 
('Badge1'),
('Badge2'),
('Badge3'),
('Badge4'),
('Badge5'),
('Badge6')
-触发将数据插入带有更新数据的employee_badge表

IF OBJECT_ID('[dbo].[TRGUpdate_badge_info]', 'TR') IS NOT NULL
    DROP TRIGGER dbo.TRGUpdate_badge_info
GO

CREATE TRIGGER dbo.TRGUpdate_badge_info ON dbo.pointsBadge
FOR UPDATE
AS
    INSERT INTO employee_badge
    SELECT d.EmployeeID,
            b.BadgeId,
            GETDATE()
    FROM pointsBadge p
    INNER JOIN DELETED d ON p.EmployeeID = d.EmployeeID
    INNER JOIN #badges b ON b.BadgeName = CASE WHEN (p.badge1 <> d.badge1) THEN 'Badge1'
                                                WHEN (p.badge2 <> d.badge2) THEN 'Badge2'
                                                WHEN (p.badge3 <> d.badge3) THEN 'Badge3'
                                                WHEN (p.badge4 <> d.badge4) THEN 'Badge4'
                                                WHEN (p.badge5 <> d.badge5) THEN 'Badge5' 
                                           END
GO

UPDATE pointsBadge SET badge5 = 2 WHERE employeeID = 1122

SELECT * FROM employee_badge

WeeklyHoursLogged是什么?这是奖章奖励条件的一部分。我这里的问题不同。无论如何,谢谢。上帝保佑。我建议创建employee_badge表。你可以在pointsBadge上创建触发器并获得更新的employee_id,在employee id的帮助下获得badgeid并插入employee_badge-获取日期timestamp@Suraz谢谢你的意见。你的解决方案看起来完美而高效。你能帮我查询一下吗?我正在努力解决这个问题。上帝保佑,非常感谢你。。。你是个天才,上帝保佑@苏拉兹