我是SQL新手,包括执行查询。每天,我们的组织都会以列出的格式发送已终止的员工列表。
我们每天都会获得一个文本文件,其中包含终止的员工ID的列表,需要在应用程序的数据库中将其停用。我知道这仍然是手动的,但我认为这对于某些自动化来说是一个好的开始。我们基本上需要完成两项任务,在两个位置的数据库中找到用户,然后停用它们。
也许是一个功能?
1。。在dbo.EnterpriseUser
表上,我们需要通过查找IVRID
来找到用户的代码(这是列表中发送给我们的员工的ID格式),然后将IsActive
字段从1
更新为0
,然后使用相同的格式将LastModDate
更新为当前日期和时间。以下是我正在使用的示例表,如果格式不正确,请抱歉。
CREATE TABLE IF NOT EXISTS EnterpriseUser (
`EnterpriseUserID` INT,
`FirstName` VARCHAR(6) CHARACTER SET utf8,
`LastName` VARCHAR(7) CHARACTER SET utf8,
`IVRID` INT,
`IsActive` INT,
`LastModDate` DATETIME
);
INSERT INTO EnterpriseUser VALUES
(6,'Robert','Andrews',2,1,'2018-07-11 13:01:54.670000');
2。。第二张表dbo.Staff
也必须为应用程序正确更新。我唯一的问题是要找到要更新的记录,我必须使用EnterpriseUserID
中的dbo.EnterpriseUser
字段,因为它现在位于StaffID
表的dbo.Staff
字段中。
在该行上,LastModDate
必须更改为当前日期,而IsActive
必须从1
更改为0
。
CREATE TABLE IF NOT EXISTS Staff (
`StaffID` INT,
`FirstName` VARCHAR(6) CHARACTER SET utf8,
`LastName` VARCHAR(7) CHARACTER SET utf8,
`LastModDate` DATETIME,
`IsActive` INT
);
INSERT INTO Staff VALUES
(6,'Robert','Andrews','2018-07-11 13:01:54.670000',1);
答案 0 :(得分:0)
要回答问题1:
UPDATE EnterpriseUser
SET IsActive = 0, LastModDate = NOW()
WHERE
IVRID = 2;
回答问题2:
UPDATE Staff
SET IsActive = 0, LastModDate = NOW()
WHERE StaffID =
(SELECT EnterpriseUserID
FROM EnterpriseUser
WHERE IVRID = 2);
如果我要构建这些文件,则可能会有一个贯穿文本文件的脚本。
您可以将它们组合成一个准系统程序,例如:
CREATE PROCEDURE termination (IN inIVRID INT)
BEGIN
UPDATE EnterpriseUser
SET IsActive = 0, LastModDate = NOW()
WHERE
IVRID = inIVRID;
UPDATE Staff
SET IsActive = 0, LastModDate = NOW()
WHERE StaffID =
(SELECT EnterpriseUserID
FROM EnterpriseUser
WHERE IVRID = inIVRID);
COMMIT;
END$$