2017-02-20 15 views
0

後、私はSQL Server 2008で働いていると私は2つのテーブルを持っている:ストアドプロシージャの挿入挿入

  • まず:列のID、名前、住所を持って生まれテーブル、Birth_Dateの
  • 第二:列を持つ市民のテーブルID、名前、収入は、

は、今私は私が「ボーンへの挿入後に市民に挿入」したい意味し、Bornに行を挿入するたびにCitizenに行を挿入するためにデータベースをしたいアドレス。

しかし、私はので、私は同じことに私は、ストアドプロシージャ

Create proc CitizenBorn 
As 
Begin 
    Insert into dbo.Citizen (ID, Name, Income, Address, Card_ID) 
     Select 
      Id, Name, '0', Address, Card_ID 
     From 
      dbo.Born 
End 

を追加しました。しかし、それは動作しませんでした

たびに行う必要はありませんので、それはパラメータをする必要があります生まれに挿入ごとに市民のテーブルに挿入するために生まれにトリガーを作成します

+0

なぜあなたは 'Born'テーブルでトリガーを使用しませんか? –

+1

「挿入済み」コレクションのデータを使用してCitizenテーブルを作成する、BornテーブルにAFTER INSERTトリガが必要です。 – pmbAustin

+0

ありがとうWEI_DBA、ありがとうございましたpmbAustin、しかし、私はすでにそれを行った、それも動作しませんでした、トリガはパラメータではありません...または私はちょうどそれがどのように動作するのかわかりません! 挿入 後dbo.Born でトリガCitizenBornを作成 として、dbo.Citizenに(ID、名前、収入、住所、Card_ID) 。SELECT ID、名前を挿入 を開始します '0'、住所をdbo.Bornから、Card_ID 終了 –

答えて

1

を私は「生まれ表」に行を挿入しようとしたが、それは「市民のテーブルを」影響を受けませんでした:

CREATE TRIGGER Born_Insert 
    ON dbo.Born 
    AFTER INSERT 
AS 
BEGIN 
    SET NOCOUNT ON; 
    INSERT INTO dbo.Citizen ([ID], [Name], [Income], [Address], [Card_ID]) 
     SELECT [Id], [Name],'0', [Address], [Card_ID] 
      FROM inserted; 
END 
GO 
+0

つまり、あなたはすでにシチズンの行がBornに入力されている行を持っているということです。ここでは1対1の対応が必要であると思われるので、奇妙に思えます。 – pmbAustin

+0

このトリガーを使用すると、Citizenテーブルに手作業で挿入する必要がなくなります。生まれた人は、必要なデータをシチズンに自動挿入します。両方を実行しようとしているコードがないことを確認してください。 – pmbAustin