0

PHPスクリプトには、SQL ServerテーブルへのT-SQL更新クエリがあります。ターゲットテーブルでトリガーを有効にするまでは正常に動作します。トリガーを有効にすると、DBDatabase エラーが発生します: 無効な SQL、MSSQL エラー: 1 (一般エラー (MSSQL インターフェイスは詳細なエラー メッセージを返すことができません)) セッションが停止しました。しかし、Management Studio でクエリを直接実行すると、トリガーがオンの場合でも正常に動作します。それを修正する方法は?

更新: クエリ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

引き金

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
4

1 に答える 1

0

SET CONCAT_NULL_YIELDS_NULL ON; SET ANSI_WARNINGS ON; SET ANSI_PADDING ON;挿入/更新を実行する前に追加することで解決しました。

于 2013-01-15T10:41:40.693 に答える