T-SQL & Access :: 生成没有插入值的日志
T-SQL & Access :: generate LOG with not inserted values
我有一个用 Access
编写的非常古老的应用程序,它试图 INSERT
SQL Server
上 table 上的一些数据。
应用程序无法插入,因为 table 上有一个主键。
所以我这样解决了问题:
IF NOT EXISTS (SELECT 'X' FROM [dbo].[Loan Type]
WHERE [Loan Type ID] = 'HOME EQUITY')
INSERT INTO [dbo].[Loan Type] ( [Loan Type ID], [Name] )
VALUES ('HOME EQUITY', 'Home Equity Loan')
现在我好了,所有的数据都被插入了,那些已经存在的被跳过了。 :)
问题:如何在 T-SQL
或 Access
中生成日志,告诉我跳过了哪些数据?我需要像 ON ERROR CONTINUE, LOG=<File Name> MAXERRORS=10
.
这样的东西
欢迎任何T-SQL
或Access
解决方案
ON ERROR CONTINUE, LOG=<File Name> MAXERRORS=10
SQL 服务器没有满足您要求的功能。一些 ETL 工具,如 SSIS,虽然有它。
因此,您可以在 t-sql 代码中实现类似的逻辑:
1: If..Else
IF NOT EXISTS (SELECT 'X' FROM [dbo].[Loan Type]
WHERE [Loan Type ID] = 'HOME EQUITY')
INSERT INTO [dbo].[Loan Type] ( [Loan Type ID], [Name] )
VALUES ('HOME EQUITY', 'Home Equity Loan')
ELSE
INSERT INTO [dbo].[Log] ( [Loan Type ID], [Name], DateAdded )
VALUES ('HOME EQUITY', 'Home Equity Loan', GETDATE())
Try..Catch
。类似于:
BEGIN TRY
INSERT INTO [dbo].[Loan Type] ( [Loan Type ID], [Name] )
VALUES ('HOME EQUITY', 'Home Equity Loan')
END TRY
BEGIN CATCH
INSERT INTO [dbo].[Log] ( [Loan Type ID], [Name], DateAdded )
VALUES ('HOME EQUITY', 'Home Equity Loan', GETDATE())
END CATCH
我有一个用 Access
编写的非常古老的应用程序,它试图 INSERT
SQL Server
上 table 上的一些数据。
应用程序无法插入,因为 table 上有一个主键。
所以我这样解决了问题:
IF NOT EXISTS (SELECT 'X' FROM [dbo].[Loan Type]
WHERE [Loan Type ID] = 'HOME EQUITY')
INSERT INTO [dbo].[Loan Type] ( [Loan Type ID], [Name] )
VALUES ('HOME EQUITY', 'Home Equity Loan')
现在我好了,所有的数据都被插入了,那些已经存在的被跳过了。 :)
问题:如何在 T-SQL
或 Access
中生成日志,告诉我跳过了哪些数据?我需要像 ON ERROR CONTINUE, LOG=<File Name> MAXERRORS=10
.
欢迎任何T-SQL
或Access
解决方案
ON ERROR CONTINUE, LOG=<File Name> MAXERRORS=10
SQL 服务器没有满足您要求的功能。一些 ETL 工具,如 SSIS,虽然有它。
因此,您可以在 t-sql 代码中实现类似的逻辑:
1: If..Else
IF NOT EXISTS (SELECT 'X' FROM [dbo].[Loan Type]
WHERE [Loan Type ID] = 'HOME EQUITY')
INSERT INTO [dbo].[Loan Type] ( [Loan Type ID], [Name] )
VALUES ('HOME EQUITY', 'Home Equity Loan')
ELSE
INSERT INTO [dbo].[Log] ( [Loan Type ID], [Name], DateAdded )
VALUES ('HOME EQUITY', 'Home Equity Loan', GETDATE())
Try..Catch
。类似于:
BEGIN TRY
INSERT INTO [dbo].[Loan Type] ( [Loan Type ID], [Name] )
VALUES ('HOME EQUITY', 'Home Equity Loan')
END TRY
BEGIN CATCH
INSERT INTO [dbo].[Log] ( [Loan Type ID], [Name], DateAdded )
VALUES ('HOME EQUITY', 'Home Equity Loan', GETDATE())
END CATCH