我有3张桌子-
1. Country (CountryName, CID (PK- AutoIncrement))
2. State (SID(PK- AutoIncrement), StateName, CID (FK to Country)
3. City (CityName, CID, SID (FK to State)
现在我只需要将名称插入到 CountryName、StateName 和 CityName 的三个表中。ID 需要更新。
Create PROCEDURE sp_place(
@CountryName char(50),
@StateName varchar(50),
@CityName nchar(20)
)
AS
DECLARE @CountryID int, @StateID int, @CityID int;
Set NOCOUNT OFF
BEGIN TRANSACTION
INSERT INTO dbo.Country VALUES (@CountryName);
SET @CountryID = SCOPE_IDENTITY();
IF @@ERROR <> 0
BEGIN
ROLLBACK
RETURN
END
Insert into dbo.State VALUES (@StateName, @CountryID);
SET @StateID = SCOPE_IDENTITY();
IF @@ERROR <> 0
BEGIN
ROLLBACK
RETURN
END
Insert into dbo.City VALUES (@CityName, @StateID);
SET @CityID= SCOPE_IDENTITY();
Commit
当我两次输入国家/地区时,该值不应更改。例如:如果我进入印度 CountryID=1 的值,当我再次进入印度时,CountryID 的值不应该增加。
我是怎么做到的?我的 SP 每次插入都会改变。