【问题标题】:SQL Query; Locate and DisableSQL查询;定位并禁用
【发布时间】:2018-07-12 10:41:45
【问题描述】:

我是 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 也必须为应用程序正确更新。我唯一的问题是要找到要更新的记录,我必须使用来自dbo.EnterpriseUserEnterpriseUserID 字段,因为它现在位于dbo.Staff 表的StaffID 字段中。

在该行上,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);

【问题讨论】:

  • 第二个问题的格式很好。感谢 DDL

标签: mysql sql qsqlquery qsqltablemodel


【解决方案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$$

【讨论】:

  • 更新工作完美,谢谢!但是,我在尝试运行该过程时遇到问题。您能否让我知道如何通过文本文件运行该程序?就像在程序中一样,IVRID 的数据到哪里去了?只是想尽可能多地学习!
  • 对于程序,您只需使用CALL termination(2)。该过程可能需要一些调整,因为 MySQL 不是我的主要专业引擎。要运行文本文件,我可能会使用某种脚本语言(最有可能是 Python)来遍历日常文本文件中的所有行。然后我会将 IVRID 值插入到上面的 SQL 代码中并针对数据库执行它们。
猜你喜欢
  • 1970-01-01
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 2019-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
相关资源
最近更新 更多