0

SQL Serverトリガーでこのヘルプを読んで、挿入前に不正なデータを切り捨てましたが、ストアドプロシージャに関する問題は解決していません。

アップデート

私の問題のため、C#コードからストアドプロシージャを呼び出すときに、グローバル一時テーブルを作成したり、切り捨てたりできないのはなぜですか?C#コードから呼び出されたときに、ストアドプロシージャからテーブルを切り捨てる場合。

更新を終了

ストアドプロシージャは

ALTER PROCEDURE [dbo].[aProcedure]
  @val1 VARCHAR(255),
  @val2 VARCHAR(255),
  ...
AS 
BEGIN
   SELECT @sql = '//Do SELECT statement'

    INSERT INTO dbo.MyTable(....)

    SELECT @paramList = ' /*list of parameters*/';

    EXEC sp_executesql @sql, @paramList, ... parameters
END

そして、私が使用したトリガー(私はSQLの初心者です)

CREATE TRIGGER MyTrigger ON dbo.MyTable
FOR INSERT
AS
BEGIN
    TRUNCATE dbo.MyTable
END

ストアドプロシージャから値が挿入されdbo.MyTable、最初にテーブルが切り捨てられ、その後に操作が行われる場合、どのようにトリガーINSERTしますか?

MSDNCodeProjectのドキュメントを読みました。

ありがとうございました

4

2 に答える 2

3

ストアドプロシージャ自体で、テーブルを切り捨てます。トリガーを書く必要はありません。トリガーはプロセスを遅くします

ALTER PROCEDURE [dbo].[aProcedure]
  @val1 VARCHAR(255),
  @val2 VARCHAR(255),
  ...
AS 
BEGIN
   SELECT @sql = '//Do SELECT statement'

     TRUNCATE table  dbo.MyTable -- < add truncate here
    INSERT INTO dbo.MyTable(....)

    SELECT @paramList = ' /*list of parameters*/';

    EXEC sp_executesql @sql, @paramList, ... parameters
END
于 2012-09-14T06:25:26.747 に答える
0
CREATE TRIGGER MyTrigger ON dbo.MyTable
AFTER INSERT
AS
BEGIN
    TRUNCATE dbo.MyTable
END
于 2012-09-14T06:28:28.243 に答える