Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

грешка при вмъкване в таблица с вместо задействане от рамката за данни на обекта

Използвайки Entity Framework 4.1, решението, публикувано от Ladislav за добавяне на Select of Scope_Identity() в края на тялото на тригера, реши проблема за мен. Копирах цялото създаване на тригер тук за пълнота. С тази дефиниция на тригера успях да добавя редове към таблицата с помощта на context.SaveChanges().

ALTER TRIGGER [dbo].[CalcGeoLoc]
   ON  [dbo].[Address]
   INSTEAD OF INSERT
AS 
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;

-- Insert statements for trigger here
INSERT INTO Address (Street, Street2, City, StateProvince, PostalCode, Latitude, Longitude, GeoLoc, Name)
SELECT Street, Street2, City, StateProvince, PostalCode, Latitude, Longitude, geography::Point(Latitude, Longitude, 4326), Name 
FROM Inserted;

select AddressId from [dbo].Address where @@ROWCOUNT > 0 and AddressId = scope_identity();
END

Редактиране за обработка на изчислени стойности (Благодаря на Крис Морган в коментарите):

Ако имате други изчислени стойности в таблицата, ще трябва да ги включите и в SELECT. Например, ако сте имали CreatedDate колона, която използва GETDATE() бихте направили избора по следния начин:

SELECT [AddressId], [CreatedDate] from [dbo].Addresses where @@ROWCOUNT > 0 and AddressId = scope_identity();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите родителска таблица, референтна таблица, име на ограничение на външния ключ и колони в SQL Server - SQL Server / TSQL урок, част 71

  2. Групово ИЗТРИВАНЕ на SQL Server 2008 (Има ли нещо като групово копие (bcp) за изтриване на данни?)

  3. SQL Server добавя първичен ключ за автоматично увеличение към съществуващата таблица

  4. Избройте всички колони за идентичност в база данни на SQL Server:sys.identity_columns

  5. Поддържа ли Microsoft OLE DB доставчик за SQL Server TLS 1.2