2012-07-24 71 views
0

我有3个表 -将数据插入到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) 

现在我只需要姓名插入到与国家或地区名称,Statename的和CITYNAME三个表。该标识需要得到更新。

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 

当我输入国家两次时,值不应该改变。 例如:如果我输入印度的国家ID = 1的值,那么当我再次进入印度时,CountryID的值不应增加。

我该怎么做?每个插入我的SP都会改变。

+0

其中是** asp.net ** ?? – 2012-07-24 09:44:32

回答

2

插入重复的国家可以检查该国已经存在并检索countryID

IF NOT EXISTS(Select 1 FROM Country Where [email protected]) 
BEGIN 
    INSERT INTO dbo.Country VALUES (@CountryName); 
    SET @CountryID = SCOPE_IDENTITY(); 
END 
ELSE 
    Select @CountryID = CountryID From Country Where [email protected] 

设置Unique Constraint如果需要,您可以对StateCity执行相同的操作。

+0

我了解您的代码..但是我在我的SP中使用,但得到错误“关键字'THEN'附近的语法不正确”任何问题出现的方式**一个国家**可以有多个状态。有了您的代码,我无法添加更多的州和城市。 – Girish 2012-07-24 10:13:52

+0

我更新了代码 – codingbiz 2012-07-24 10:22:05

+0

紧接着,我用INSERT INTO dbo.State,并给出错误,告诉“期望CONVERSATION”.. – Girish 2012-07-24 10:27:38

0

你为什么不上国家或地区名称列不会让你在所有

1
Hello try with this syntax 

IF EXISTS (SELECT * FROM Country WHERE CountryName= @CountryName) 
BEGIN 
    UPDATE dbo.Country 
    SET CountryName = @CountryName 
    WHERE CountryId = (SELECT CountryId FROM dbo.Country WHERE CountryName= @CountryName); 
END 
ELSE 
BEGIN 
    INSERT INTO dbo.Country(CountryName) VALUES (@CountryName); 

END 

-- For the identity you must just add identity to your column in your creation script 
+0

我用你的代码。但问题是一个国家可能有多个国家。有了您的代码,我无法添加更多的州和城市。 – Girish 2012-07-24 10:08:32

+0

这不是问题,因为CID是状态表或城市表中的外键 – 2012-07-24 10:14:33

+0

CID在状态表中是FK,在城市表中SID是FK。这就是我所关心的......每个国家都有不止一个国家​​......在这段代码中,我不能执行多个国家。 – Girish 2012-07-24 10:28:56

相关问题