In php script there is T-SQL update query to SQL Server table. It works fine until I enable trigger on target table. When trigger is enabled I receive DBDatabase error: Invalid SQL, MSSQL Error: 1 (General Error (The MSSQL interface cannot return detailed error messages).)
Session halted.
But if I run query directly in Management Studio – it works normal even when trigger is On.
How to fix that?
upd:
query UPDATE T_USER SET US_KEY='30087', US_TEXT=NULL, US_LIC=NULL, US_PRKEY=14696, US_TURAGENT=0, US_REG=1, US_3=0, US_4=0, US_KOL=0, US_2=0, US_ID='test', US_PASSWORD='111', us_manager='manager', US_EMAIL=NULL, US_HOST=NULL, US_ADDRESS=NULL, US_PHONE=NULL, US_COMPANYNAME='Individual', US_AGENT='Individual', US_FAX=NULL WHERE US_KEY = 30087
trigger
ALTER TRIGGER [dbo].[tt_updEncryptedPassword]
ON [dbo].[T_USER]
FOR UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF UPDATE(US_PASSWORD)
begin
declare @str varchar(256),@uskey int,@encrypted varchar(256)
select @uskey=US_KEY,@str=US_PASSWORD from Inserted
DECLARE @URL SysName,@Header XML,@Body XML
;WITH XMLNAMESPACES (DEFAULT 'http://tempuri.org/')
SELECT @URL = 'http://10.0.10.1/encryptionservice/EncryptionService.asmx'
,@Body = ' <EncryptString xmlns="http://www.qwe.com/">
<source>'+@str+'</source>
</EncryptString>'
EXEC dbo.spSOAPMethodCall @URL,@Header OUT,@Body OUT
;WITH XMLNAMESPACES(DEFAULT 'http://www.qwe.com')
select @encrypted=X.z.value('EncryptStringResult[1]', 'varchar(250)') from @Body.nodes('/EncryptStringResponse') AS X(z)
update [T_USER] set US_BANKNAME=@encrypted where US_KEY=@uskey
end
END
solved via adding
SET CONCAT_NULL_YIELDS_NULL ON;before running insert/update.SET ANSI_WARNINGS ON;
SET ANSI_PADDING ON;