Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用update with inserted table测试触发器脚本,我得到错误;无效的对象名称';插入“;_Sql - Fatal编程技术网

Sql 如何使用update with inserted table测试触发器脚本,我得到错误;无效的对象名称';插入“;

Sql 如何使用update with inserted table测试触发器脚本,我得到错误;无效的对象名称';插入“;,sql,Sql,我希望能够编写一个单元测试脚本来显示代码中每个语句的结果。当我使用插入的表运行脚本时,消息显示“无效的对象名称‘插入’”。我发现现在测试逻辑的唯一方法是使用源表测试代码,然后在创建触发器时从源表更改为插入表。这将被用作一种控制,以将代码推广到qa和生产中。为插入表的触发器编写单元测试脚本的最佳方法是什么? sql server 2008r --insert test INSERT INTO SIS.dbo.People (First_Name,Middle_Name,Last_Name) SEL

我希望能够编写一个单元测试脚本来显示代码中每个语句的结果。当我使用插入的表运行脚本时,消息显示“无效的对象名称‘插入’”。我发现现在测试逻辑的唯一方法是使用源表测试代码,然后在创建触发器时从源表更改为插入表。这将被用作一种控制,以将代码推广到qa和生产中。为插入表的触发器编写单元测试脚本的最佳方法是什么? sql server 2008r

--insert test
INSERT INTO SIS.dbo.People (First_Name,Middle_Name,Last_Name)
SELECT
     T.ForeName
    ,T.Middle_Name
    ,T.Surname
FROM CRM.dbo.Contact1 C
INNER JOIN SIS.dbo.People P
    ON P.People_ID = C.Key4
CROSS APPLY dbo.NameParser(C.Contact) T
WHERE C.Key1 = '76'

--insert reference inserted table
INSERT INTO SIS.dbo.People (First_Name,Middle_Name,Last_Name)
SELECT
     T.ForeName
    ,T.Middle_Name
    ,T.Surname
FROM inserted i --change to inserted
INNER JOIN SIS.dbo.People P
    ON P.People_ID = i.Key4
CROSS APPLY dbo.NameParser(i.Contact) T
WHERE i.Key1 = '76'

您需要在第一个
INSERT
上使用
OUTPUT
子句。在该
OUTPUT
子句中,
inserted
将是一个“魔术”表,它将只存在于那里。但您可以使用它将输出到表变量中。在第二次插入中,您可以从该表变量中插入。好的,我创建了一个insertedcontact测试表,用于我的代码,我将尝试输出子句