2016-11-22 5 views
2

私は「主キーとしてPERSON_ID」、「DOB」と「場所」は、次のようにのように列を持つテーブル「人」を持っている:sqlクエリを使用して1つのテーブルにのみ値を追加して別のテーブルに値を挿入する方法はありますか?

'Person' 
Person_id |Name|DOB | place 

を別のテーブルには、次のようにEMP_IDが主キーである「従業員」です。

'employee' 
Person_id |emp_id|dateofjoin 

そして、もう一つのテーブル「詳細」:

'Details' 
emp_id|competency|rating 

i「は人」テーブルが2つのas'employeテーブル」と 『詳細』の残りの部分の詳細を追加したら、今私が欲しいものですあなたを得るためにPersonテーブルに追加された新しいPersonに関してもpdateされます。だから、どのように私はSQLクエリを使用してこれを持つことができますか?また、私はデータベースに精通していないことを明確にしたい。

+2

これは通常、すべての3つの表に挿入しますストアドプロシージャで実行されるだろう。 –

+3

PKという人名は、IMHOのアイディアの中で最高のものではありません。 "John Smith"という名前の二人の人がいたら? – scsimon

+0

@scsimonあなたは正しいですが、そのケースを無視して、いつも違う名前にすることができます。 – Learner

答えて

2

私は、この(SQL Server用)のようなものの後にあなたを思う:

Create Procedure dbo.CreateMyEmployee (@empName varchar(50), 
@dob datetime, 
@doj datetime, 
@place as varchar(100), 
@competency varchar(100), 
@rating int) 
As 
Begin 
    Declare @empId int 
    Begin Transaction 
    Begin Try 
    Insert into Person (Name, DOB, Place) 
    Values (@empName, @dob, @place) 
    Insert into employe (Name, dateofJoin) -- Assuming emp_id is identity columen 
    Values (@empName, @doj) 
    Select @empId = SCOPE_IDENTITY() 
    Insert Into Details(emp_id, competency, rating) 
    Values (@empId, @competency, @rating) 
    Commit transaction 
    End Try 
    Begin Catch 
    Rollback Transaction 
    SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_MESSAGE() AS ErrorMessage 
    End Catch 
End 
関連する問題