SQL查询;定位并禁用
SQL Query; Locate and Disable
我是 SQL 的新手,包括执行查询。每天,我们的组织都会发送一份以列出格式终止的员工名单。
我们每天都会收到一个文本文件,其中包含已终止的员工 ID 列表,我们需要在应用程序的数据库中将其停用。我知道这仍然是手动的,但我认为这是一些自动化的良好开端。我们基本上需要做两个任务,在数据库中的两个位置找到用户,然后停用它们。
也许是函数?
1. 在 dbo.EnterpriseUser
table 上,我们需要通过查找 IVRID
(这是以列出的格式发送给我们的员工 ID),然后将 IsActive
字段从 1
更新为 0
,然后使用 LastModDate
将 LastModDate
更新为当前日期和时间相同的格式。下面是我正在使用的示例 table,如果格式不正确,请见谅。
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. 第二个 table dbo.Staff
也必须为应用程序正确更新。我唯一的问题是要找到要更新的记录,我必须使用 dbo.EnterpriseUser
中的 EnterpriseUserID
字段,因为它现在位于 dbo.Staff
[=] 的 StaffID
字段中45=]。
在那一行,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);
回答问题 #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$$
我是 SQL 的新手,包括执行查询。每天,我们的组织都会发送一份以列出格式终止的员工名单。
我们每天都会收到一个文本文件,其中包含已终止的员工 ID 列表,我们需要在应用程序的数据库中将其停用。我知道这仍然是手动的,但我认为这是一些自动化的良好开端。我们基本上需要做两个任务,在数据库中的两个位置找到用户,然后停用它们。
也许是函数?
1. 在 dbo.EnterpriseUser
table 上,我们需要通过查找 IVRID
(这是以列出的格式发送给我们的员工 ID),然后将 IsActive
字段从 1
更新为 0
,然后使用 LastModDate
将 LastModDate
更新为当前日期和时间相同的格式。下面是我正在使用的示例 table,如果格式不正确,请见谅。
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. 第二个 table dbo.Staff
也必须为应用程序正确更新。我唯一的问题是要找到要更新的记录,我必须使用 dbo.EnterpriseUser
中的 EnterpriseUserID
字段,因为它现在位于 dbo.Staff
[=] 的 StaffID
字段中45=]。
在那一行,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);
回答问题 #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$$