CREATE TRIGGER TestDemo ON Consultants1 INSTEAD OF UPDATE AS DECLARE @Sql nvarchar(200), @TableName nvarchar(50), @FieldName nvarchar(100), @PKCols VARCHAR(1000), --Primary Key @Value nvarchar(100) SET @TableName = 'Consultants1' SET @FieldName = 'DisplayName' SET @Value = 'Test123' SELECT * INTO #ins FROM inserted SELECT @PKCols = c.COLUMN_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS pk , INFORMATION_SCHEMA.KEY_COLUMN_USAGE c WHERE pk.TABLE_NAME = @TableName AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND c.TABLE_NAME = pk.TABLE_NAME AND c.CONSTRAINT_NAME = pk.CONSTRAINT_NAME SELECT @Sql = 'UPDATE ' + @TableName + ' SET ' SELECT @Sql = @Sql + @FieldName + ' = ''' + @Value + '''' SELECT @Sql = @Sql + ' WHERE #ins.' + @PKCols + ' = ' + @TableName + '.' + @PKCols EXEC (@Sql)
UPDATE Consultants1 SET DisplayName = 'abcd' where ConsIntID = 'Test123285'
Msg 4104, Level 16, State 1, Line 1 The multi-part identifier "#ins.ConsIntID" could not be bound.
您可以更改这行代码
SELECT @Sql = @Sql + ' WHERE #ins.' + @PKCols + ' = ' + @TableName + '.' + @PKCols
对此
SELECT @Sql = @Sql + ' FROM #ins a INNER JOIN ' + @TableName + ' b ON a.' + @PKCols + ' = b.' + @PKCols
另一种情况是,在更改之后,您可能会收到一个错误:Msg 570,Level 16,State 1,Line 1代替触发器不支持直接递归。触发器执行失败。
问题内容: 我的错误讯息: 多部分标识符table2.ValidSince“无法绑定。 我需要如何更改更新才能使其正常工作? 问题答案: 您需要加入
问题内容: 试试这个 给出错误 不能绑定多部分标识符“ tblJobBudget.lastmodifiedby”。 问题答案: 这是因为没有任何带有标识符的表或表别名。 您的表是: 但不是: 如果需要表中的列,则应在表中包含一个子句:
问题内容: 架构: 问题查询: 生成此架构并在SQL Server 2008下在SQLFiddle中运行查询将导致: 对子查询使用CROSS APPLY而不是INNER JOIN可以解决此问题 有什么问题? 编辑:我添加了“ TOP 1”,它是真正查询的一部分,并且是问题的相关部分。 Edit2:有关该问题的更多信息。 问题答案: 您不能将from子句引用到JOIN的另一部分。 改用它。 已编辑
问题内容: 我有2张桌子: Table1 =加油站名称(成对) Table2 =具有坐标信息(经度和纬度等) 表1的 示例: 表 2的 示例: 我想使用位于中的坐标信息更新此表。我尝试根据SQL Server2005执行以下操作:无法绑定多部分标识符 我收到以下错误消息: 消息4104,级别16,状态1,第1行 无法绑定多部分标识符“ t1.Lattitude1”。 但是,如果执行以下操作,则可以
问题内容: 我正在尝试使用MySQL触发器生成错误消息。下面是我的代码: 但这总是会产生错误。我不知道错误是什么,因为它没有说任何有关错误的信息,而只是“错误”。 有什么建议吗?除此之外,有人说使用存在问题,因为它可能取决于MySQL版本。有什么建议吗? 问题答案: 该子句是信号语法的一部分-它们之间不应存在分号()。此外,它使用运算符,而不是:
我想创建ddl触发器(在创建),这将创建一个dml触发器,但我有错误: ORA-06512:8 00604. 00000-"错误发生在递归SQL级别%s"*原因:错误发生在处理递归SQL语句(适用于内部字典表的语句)。*操作:如果可以纠正堆栈上下一个错误中描述的情况,请这样做;否则请联系Oracle支持。