【发布时间】:2020-02-26 17:03:37
【问题描述】:
目前我正在更新我公司数据库上已经存在的表。连接工作正常,但我的查询让我有些头疼。
我想做的事:使用 2 个表(Job-Table 和 Step-Table)记录日志
因此,我创建了一个自定义 powershell 对象,其中包含我可以传递的所有必要信息。 当我开始记录时,我在作业表中创建一个新条目,其中一列为空/空(记录结束时间:列名:停止)。 登录完脚本后,我想添加结束时间(添加到 Job-Table 中已经存在的条目中)。
我知道有不同的方法可以检查您是在记录作业的开始还是结束,但我想用 Sql Query 来做,所以我想出了这个 SQL-Insert 语句:
Begin
IF NOT EXISTS(Select * FROM job.table
WHERE JobId = @JobId)
BEGIN
INSERT INTO logg.Job (Module,JobId,ScriptId,Filepath,Start,Status,Stop,Infotext)
Values(@Module,@JobId,@ScriptId,@Filepath,@Start,@Status,@Stop,@Infotext)
END
ELSE
BEGIN
INSERT INTO logg.Job(Stop)
VALUES (@Stop)
WHERE( JobId = @JobId)
END
END
我很确定我错过了一些';'但我所有的尝试和错误都没有给我带来解决方案......
基本上我想用我当前的 Job-ID 检查 job.table 中是否有一个条目。 如果没有,我将开始一个新的日志作业并想要插入所有的值。如果有一个带有 Job-ID 的条目,我可以确定(我的代码,我的方式)我想停止日志记录作业,因此只需要更新 'Stop' 的值(结束时间)。
如果我使用更简单的查询,例如:
INSERT INTO job.Table (Module,JobId,ScriptId,Filepath,Start,Status,Stop,Infotext)
Values(@Module,@JobId,@ScriptId,@Filepath,@Start,@Status,@Stop,@Infotext)
我在数据库上得到了我想要的值,所以连接和数据类型错误已经被消除了。
我的语法错误在哪里?根据我的 IDE “靠近 WHERE”...
【问题讨论】:
-
你使用什么数据库?
-
我的公司使用 Microsoft SQL
标签: sql-server sql-insert insert-update