SQL查询;定位并禁用

SQL Query; Locate and Disable

我是 SQL 的新手,包括执行查询。每天,我们的组织都会发送一份以列出格式终止的员工名单。

我们每天都会收到一个文本文件,其中包含已终止的员工 ID 列表,我们需要在应用程序的数据库中将其停用。我知道这仍然是手动的,但我认为这是一些自动化的良好开端。我们基本上需要做两个任务,在数据库中的两个位置找到用户,然后停用它们。

也许是函数?

1.dbo.EnterpriseUser table 上,我们需要通过查找 IVRID(这是以列出的格式发送给我们的员工 ID),然后将 IsActive 字段从 1 更新为 0,然后使用 LastModDateLastModDate 更新为当前日期和时间相同的格式。下面是我正在使用的示例 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$$