SQL Server 创建触发器:关键字“IF”附近的语法不正确

阿根廷

我正在尝试在 SQL Server 中转换 db2 触发器。我已经更改了一些内容作为 NEWDOC 和 OLDDOC 引用并删除了“THEN”关键字。

我仍然收到此错误:

Incorrect syntax near ';'.
Incorrect syntax near the keyword 'IF'.

SQL是:

-- <ScriptOptions statementTerminator="!" />
CREATE TRIGGER DOCUMENTS_UPDATE ON DOCUMENTS_VIEW
INSTEAD OF UPDATE 
AS 
BEGIN
  IF (select user_id from inserted) is null
    UPDATE DOCUMENTS 
    SET    id = (select id from inserted), 
           user_id = (SELECT id from users 
                      where username = (select username from inserted)
                     ), 
           code = (select code from inserted), 
           description = (select description from inserted), 
           type = (select type from inserted), 
           expiry = (select expiry from inserted), 
           parent_code = (select parent_code from inserted), 
           attributes = (select attributes from inserted), 
           acquired = (select acquired from inserted) 
    WHERE id = (select id from inserted);
  ELSE 
    UPDATE DOCUMENTS 
    SET    id = (select id from inserted), 
           user_id = (select user_id from inserted), 
           code = (select code from inserted), 
           description = (select description from inserted), 
           type = (select type from inserted), 
           expiry = (select expiry from inserted), 
           parent_code = (select parent_code from inserted), 
           attributes = (select attributes from inserted), 
           acquired = (select acquired from inserted) 
    WHERE id = (select id from inserted);
  END IF;

  UPDATE DOCUMENT_STATES 
  SET    document_id = (select id from inserted), 
         state = (select state from inserted), 
         date = (select date from inserted), 
         timestamp = (select timestamp from inserted) 
  WHERE document_id = (select id from inserted);

  IF NEWDOC.type = 'client_order' 
    UPDATE DOCUMENTS 
    SET    parent_code = (select code from inserted) 
    WHERE code = (select parent_code from inserted);
END IF;
END!
戈登·利诺夫

您的语法问题很容易解决。正如 GandRalph 指出的那样,END IFSQL Server 中没有

更重要的是,你没有inserted正确使用它可以包含多行——受 DML 语句影响的所有行。发生这种情况时,您的查询将因错误而严重失败。

第一个if可以替换为单个update. 它看起来像这样:

update d
    set  user_id = coalesce(u.id, i.userid),
         code = i.code, 
         description = i.description, 
         type = i.type, 
         expiry = i.expiry, 
         parent_code = i.parent_code, 
         attributes = i.attributes, 
         acquired = i.acquired 
    from documents d join
         inserted i
         on d.id = i.id left join
         users u
         on u.username = i.username

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL Server中关键字“ DECLARE”附近的语法不正确

来自分类Dev

SQL Server 2008:关键字“ AS”附近的语法不正确

来自分类Dev

删除查询SQL Server中关键字'INNER'附近的语法不正确

来自分类Dev

SQL Server中审核触发器的“','附近的语法不正确”

来自分类Dev

关键字“用户”附近的语法不正确-如何编写查询-VB.net和SQL Server

来自分类Dev

为什么我将这种“关键字'between'附近的不正确语法”转化为使用之间的SQL Server查询?

来自分类Dev

Visual Studio 2017 C# 中的本地 SQL Server 数据库(关键字“FROM”附近的“语法不正确”)

来自分类Dev

')'SQL SERVER附近的语法不正确

来自分类Dev

SQL Server:“@”附近的语法不正确

来自分类Dev

关键字“ Table” C#SQL附近的语法不正确

来自分类Dev

用户定义的函数sql,关键字“ return”附近的语法不正确

来自分类Dev

SQL Multiple Joins返回错误“关键字'JOIN'附近的语法不正确”。

来自分类Dev

SQL Multiple Joins返回错误“关键字'JOIN'附近的语法不正确”。

来自分类Dev

用户定义的函数sql,关键字“ return”附近的语法不正确

来自分类Dev

sql错误-“关键字'WHERE附近的语法不正确”

来自分类Dev

migrationBuilder 中的 SQL 关键字附近的语法不正确

来自分类Dev

关键字 CASE(SQL 函数)附近的语法不正确

来自分类Dev

T SQL 更新使用 LAG 关键字“FROM”附近的语法不正确

来自分类Dev

'JSON'附近的语法不正确-SQL Server 2016

来自分类Dev

SQL Server''。'附近的语法不正确的异常。'?

来自分类Dev

SQL SERVER sp_executesql'''附近的语法不正确

来自分类Dev

','附近的语法不正确。SQL Server和C#

来自分类Dev

SQL Server'11'附近的语法不正确

来自分类Dev

SQL Server 08')'附近的语法不正确

来自分类Dev

SQL Server 2014的IIF``附近语法不正确''错误

来自分类Dev

SQL Server“附近的语法不正确” WHERE语句

来自分类Dev

'0'附近的语法不正确。(Microsoft SQL Server)

来自分类Dev

'/' 附近的语法不正确。在 SQL Server 2012 中

来自分类Dev

SQL Server 错误:“'xyz' 附近的语法不正确”

Related 相关文章

  1. 1

    SQL Server中关键字“ DECLARE”附近的语法不正确

  2. 2

    SQL Server 2008:关键字“ AS”附近的语法不正确

  3. 3

    删除查询SQL Server中关键字'INNER'附近的语法不正确

  4. 4

    SQL Server中审核触发器的“','附近的语法不正确”

  5. 5

    关键字“用户”附近的语法不正确-如何编写查询-VB.net和SQL Server

  6. 6

    为什么我将这种“关键字'between'附近的不正确语法”转化为使用之间的SQL Server查询?

  7. 7

    Visual Studio 2017 C# 中的本地 SQL Server 数据库(关键字“FROM”附近的“语法不正确”)

  8. 8

    ')'SQL SERVER附近的语法不正确

  9. 9

    SQL Server:“@”附近的语法不正确

  10. 10

    关键字“ Table” C#SQL附近的语法不正确

  11. 11

    用户定义的函数sql,关键字“ return”附近的语法不正确

  12. 12

    SQL Multiple Joins返回错误“关键字'JOIN'附近的语法不正确”。

  13. 13

    SQL Multiple Joins返回错误“关键字'JOIN'附近的语法不正确”。

  14. 14

    用户定义的函数sql,关键字“ return”附近的语法不正确

  15. 15

    sql错误-“关键字'WHERE附近的语法不正确”

  16. 16

    migrationBuilder 中的 SQL 关键字附近的语法不正确

  17. 17

    关键字 CASE(SQL 函数)附近的语法不正确

  18. 18

    T SQL 更新使用 LAG 关键字“FROM”附近的语法不正确

  19. 19

    'JSON'附近的语法不正确-SQL Server 2016

  20. 20

    SQL Server''。'附近的语法不正确的异常。'?

  21. 21

    SQL SERVER sp_executesql'''附近的语法不正确

  22. 22

    ','附近的语法不正确。SQL Server和C#

  23. 23

    SQL Server'11'附近的语法不正确

  24. 24

    SQL Server 08')'附近的语法不正确

  25. 25

    SQL Server 2014的IIF``附近语法不正确''错误

  26. 26

    SQL Server“附近的语法不正确” WHERE语句

  27. 27

    '0'附近的语法不正确。(Microsoft SQL Server)

  28. 28

    '/' 附近的语法不正确。在 SQL Server 2012 中

  29. 29

    SQL Server 错误:“'xyz' 附近的语法不正确”

热门标签

归档