SQL查询找到并禁用

时间:2018-07-12 10:41:46

标签: mysql sql qsqlquery qsqltablemodel

我是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);

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$$