2017-10-10 3 views
0

docPathフィールドを更新するには次のコードが必要です。更新ステートメントを実行する前にファイルの存在を確認する方法や、ディレクトリにファイルが存在する場合のみ更新する方法については助けが必要ですファイルの存在を確認するには

INSERT INTO DocPath(itemId,docPath) 
SELECT 
    itemId, 
    '\\ABC-SERVER\Data\PRODUCTION\VAULT\2500000 - 2599999 \PDF\'' 
    +[WITESTCO].[dbo].[WIITEMX].[itemId] 
    +'.pdf' as docPath 
    FROM [WITESTCO].[dbo].[WIITEMX] 
    WHERE 
     itemId like '2500%' or itemId like '2501%' ; 
+0

[ファイルがSQL Serverに存在するかどうかを確認しますか?](https://stackoverflow.com/questions/11740000/check-for-file-exists-or-not-in- sql-server) –

答えて

0

この

CREATE FUNCTION dbo.fn_FileExists(@path varchar(512)) 
RETURNS BIT 
AS 
BEGIN 
    DECLARE @result INT 
    EXEC master.dbo.xp_fileexist @path, @result OUTPUT 
    RETURN cast(@result as bit) 
END; 
GO 

のような関数を作成し、この

IF dbo.fn_FileExists('MyPath') = 1 
INSERT INTO DocPath(itemId,docPath) 
SELECT itemId,'MyPath' ...; 
のような関数を使用します

this questionと同じ

+0

関数が呼び出された後、 'INSERT'文が処理される前にファイルを削除することはできませんか? – STLDeveloper

+0

もちろん、それは可能ですが、わかっているように、ファイルをデータベーストランザクションから削除することをロックすることは不可能です。 –

+0

その場合、元の問題は引き続き存在する可能性があります。この場合、エラーを処理する方が良いのではないでしょうか? – STLDeveloper

関連する問題