如何将表名作为参数放入 SQL 查询中的安全方法是什么?您不能使用PreparedStatement将表名称作为参数。使用Statement连接字符串与动态表名执行查询是可能的,但不建议这样做,因为存在SQL注入的风险。做到这一点的最佳方法是什么?
我正在编写SQL Server 2005触发器.我想在触发器执行期间进行一些日志记录,在我的日志表中使用INSERT语句.当执行期间发生错误时,我想引发错误并取消导致触发器执行的操作,但不要丢失日志记录.实现这一目标的最佳方法是什么?
现在我的触发器会在出现错误时记录除情况之外的所有内容 - 因为ROLLBACK.需要RAISERROR语句才能通知调用程序有关错误的信息.
现在,我的错误处理代码如下所示:
if (@err = 1)
begin
INSERT INTO dbo.log(date, entry) SELECT getdate(), 'ERROR: ' + out from #output
RAISERROR (@msg, 16, 1)
rollback transaction
return
end
Run Code Online (Sandbox Code Playgroud)