sql >> データベース >  >> RDS >> Sqlserver

エンティティデータフレームワークからのトリガーの代わりにテーブルに挿入するときにエラーが発生しました

    Entity Framework 4.1を使用して、トリガー本体の最後にSelect of Scope_Identity()を追加するためにLadislavによって投稿されたソリューションは、私にとって問題を解決しました。完全を期すために、トリガーの作成全体をここにコピーしました。このトリガー定義により、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
    

    計算値を処理するための編集 (コメントのChris Morganに感謝します):

    テーブルに他の計算値がある場合は、それらもSELECTに含める必要があります。たとえば、CreatedDateがある場合 GETDATE()を使用する列 次のように選択します:

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


    1. スウェーデンの新しい電子IDFrejaeIDの背後にあるデータベースの自動化

    2. 複数のインデックスと複数列のインデックス

    3. 既存のauth.Userデータを新しいDjango1.5カスタムユーザーモデルに移行しますか?

    4. PostgreSQLのタイムスタンプから日付(yyyy / mm / dd)を抽出します