2つのテーブルに値を挿入するストアドプロシージャを作成しようとしていますtblAirport
とtblCountry
です。 tblAirport
にはtblCountry
を参照するFKがあり、tblAirport
のFKの値を使用してtblCountry
に値を挿入したいとします。私はSQLに新しいので、これを達成するためにSCOPE_IDENTITY()
関数を使用しなければならないと思いますが、実装方法はわかりません。これらは私のテーブルです。ストアドプロシージャとScope_Identity()SQL
tblAirport
PK INT IDENTITY(1,1),
geoLocation GEOGRAPHY,
ICAOCode VARCHAR(4),
IATACode VARCHAR(3),
strName VARCHAR(MAX),
strCity VARCHAR(MAX),
strCountry VARCHAR(MAX),
degLat DECIMAL(7,2),
minLat DECIMAL(7,2),
secLat DECIMAL(7,2),
Equator VARCHAR(1),
degLong DECIMAL(7,2),
minLong DECIMAL(7,2),
secLong DECIMAL(7,2),
Meridian VARCHAR(1),
strElevation VARCHAR(5),
FKCountry INT NULL
tblCountryは
PK INT IDENTITY(1,1),
strCountry VARCHAR(MAX)
これは私がtblCountry
テーブルに国を挿入する方法がわからない
CREATE PROCEDURE [dbo].spInsertAirport
@ICAOCode VARCHAR(4),
@IATACode VARCHAR(3),
@strName VARCHAR(MAX),
@strCity VARCHAR(MAX),
@strCountry VARCHAR(MAX),
@degLat DECIMAL(7,2),
@minLat DECIMAL(7,2),
@secLat DECIMAL(7,2),
@Equator VARCHAR(1),
@degLong DECIMAL(7,2),
@minLong DECIMAL(7,2),
@secLong DECIMAL(7,2),
@Meridian VARCHAR(1),
@strElevation VARCHAR(5),
@FKCountry INT
AS
BEGIN TRANSACTION
BEGIN TRY
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
INSERT INTO tblAirport (ICAOCode, IATACode, strName, strCity, strCountry,
degLat, minLat, secLat, Equator,
degLong, minLong, secLong, Meridian, strElevation)
VALUES (@IATACode, @strName, @strCity, @strCountry,
@degLat, @minLat, @secLat, @Equator,
@degLong, @minLong, @secLong, @Meridian, @strElevation)
私のストアドプロシージャの持っているものです;任意のヘルプは素晴らしいです
'tblAirport'テーブルに' strCountry VARCHAR(MAX) 'があるのはなぜですか?それはあなたの 'tblCountry'テーブルから来るべきです。また、 'tbl'接頭辞を無用にしてしまうことも考慮してください。 – Yuck
これらはすべて代入のスペックです –