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
在FileMaker中添加记录时,在SQL中使用触发器更新记录时,无法使用OUTPUT子句with INTO子句_Sql_Sql Server_Filemaker - Fatal编程技术网

在FileMaker中添加记录时,在SQL中使用触发器更新记录时,无法使用OUTPUT子句with INTO子句

在FileMaker中添加记录时,在SQL中使用触发器更新记录时,无法使用OUTPUT子句with INTO子句,sql,sql-server,filemaker,Sql,Sql Server,Filemaker,我知道类似的问题在这里已经被问了好几次了,但似乎没有人能给我我需要的答案——特别是因为我在谈论SQL和FileMaker之间的关系 看,我实际上根本没有在触发器中使用OUTPUT子句!但FileMaker似乎要么认为我是,要么将自己看不见的东西作为输出子句插入 下面是一个触发器示例: CREATE TRIGGER [dbo].[TRG_person__name] ON [dbo].[person] AFTER INSERT,UPDATE AS BEGIN -- SET

我知道类似的问题在这里已经被问了好几次了,但似乎没有人能给我我需要的答案——特别是因为我在谈论SQL和FileMaker之间的关系

看,我实际上根本没有在触发器中使用OUTPUT子句!但FileMaker似乎要么认为我是,要么将自己看不见的东西作为输出子句插入

下面是一个触发器示例:

CREATE TRIGGER [dbo].[TRG_person__name] 
   ON  [dbo].[person] 
   AFTER INSERT,UPDATE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

IF  UPDATE ( person_name_first ) 
    BEGIN

        UPDATE person
        SET person_name_first = dbo.mslTitleCase ( i.person_name_first )
        FROM person AS x
        JOIN inserted AS i ON x._pk_person = i._pk_person
        WHERE x._pk_person = i._pk_person

    END
--END IF


END
如果我要使用SQL查询创建记录,那么mslTitleCase函数已经声明并工作。 但在FileMaker中创建新记录时可能会出现错误

是否有人有任何提示来找到一种方法来停止FileMaker中的此错误

非常感谢您的指导

多谢各位


Lewis

您可能还有其他问题,但是
更新的正确语法是:

    UPDATE p
        SET person_name_first = dbo.mslTitleCase ( i.person_name_first )
    FROM person p JOIN
         inserted i
         ON p._pk_person = i._pk_person
    WHERE p._pk_person = i._pk_person;

重要的更改是,
更新
引用的是表别名,而不是表名。我认为对于名为
person
的表,
p
是比
x
好得多的别名,您可能还有其他问题,但是
更新的正确语法是:

    UPDATE p
        SET person_name_first = dbo.mslTitleCase ( i.person_name_first )
    FROM person p JOIN
         inserted i
         ON p._pk_person = i._pk_person
    WHERE p._pk_person = i._pk_person;

重要的更改是,
更新
引用的是表别名,而不是表名。我认为对于名为
person
的表,
p
是比
x
好得多的别名。听起来您的应用程序正在使用OUTPUT子句直接返回修改后的数据。如果表有任何触发器,则不允许这样做。他们必须将修改后的数据输出到表中,然后从表中选择数据

本条涵盖了这一问题:


如果是这种情况,您将无法向表中添加触发器。对数据的更正需要从外部源进行。

听起来您的应用程序正在使用OUTPUT子句直接返回修改后的数据。如果表有任何触发器,则不允许这样做。他们必须将修改后的数据输出到表中,然后从表中选择数据

本条涵盖了这一问题:


如果是这种情况,您将无法向表中添加触发器。需要从外部来源对数据进行更正。

这被报告为错误:


它看起来没有被解决。

这被报告为一个错误:


看起来问题还没有解决。

谢谢Nicolai-也许我的电子邮件太模糊了!看起来我必须找到另一种方法来进行插入,但更新效果很好。谢谢Nicolai-也许我的电子邮件太模糊了!看起来我必须找到另一种方法来执行插入操作,但更新只适用于良好的触发器。感谢您的帮助-我将更新触发器以使用此最佳实践。感谢您的帮助-我将更新触发器以使用此最佳实践。