我读了这个Help with SQL Server Trigger to truncate bad data before insert但是在关于存储过程时没有解决我的问题。
更新
由于我的问题Why cannot create global temporary table or truncate it when call a stored procedure from C# code?在从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
操作?
我从MSDN和CodeProject阅读了文档。
谢谢
答案 0 :(得分: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
答案 1 :(得分:0)
CREATE TRIGGER MyTrigger ON dbo.MyTable
AFTER INSERT
AS
BEGIN
TRUNCATE dbo.MyTable
END