mysql—sql查询;定位并禁用

z4iuyo4d  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(538)

我是sql新手,包括执行查询。我们的组织每天都会以列表的形式发送一份被解雇员工的名单。
我们每天都会收到一个文本文件,其中包含一个被终止的员工id列表,我们需要在应用程序的数据库中停用这些id。我知道这仍然是手动的,但我认为这是一个良好的开端,一些自动化。我们基本上需要做两个任务,在数据库中的两个位置找到用户,然后停用它们。
也许是个函数?
1上 dbo.EnterpriseUser 表中,我们需要通过查找 IVRID (即以所列格式发送给我们的员工id),然后更新 IsActive 字段自 10 ,然后更新 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第二张table dbo.Staff 也必须为应用程序正确更新。我唯一的问题是要找到要更新的记录,我必须使用 EnterpriseUserID 字段自 dbo.EnterpriseUser 就像现在的世界一样 StaffID 场上的 dbo.Staff table。
在那一排 LastModDate 必须更改为当前日期 IsActive 必须从 10 .

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);
kqhtkvqz

kqhtkvqz1#

回答问题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$$

相关问题