Как поместить FK в другую таблицу с помощью хранимой процедуры - PullRequest
1 голос
/ 08 сентября 2011

У меня есть одна форма входа, например:

Username: Ashish

Password: Pass

Contact no: 1234567890

State: Maharashtra

Наличие двух таблиц:

create table DGRegion
(DG_Regionno Int Identity (1,1) NOT Null constraint pk1 Primary Key,
 DG_Username varchar(50),
 DG_Password varchar(50), 
 DG_Contactno int ,
 DG_StateNo int References DGState(DG_stateno))


Create table DGState 
 (DG_stateno Int Identity (1,1) NOT Null constraint pk Primary Key ,
  DG_State varchar (50))

Теперь, как мне создать одну хранимую процедуру P, которая будет вводить значения в таблицы DGRegion и DGState?

После нажатия на кнопку отправки я использую asp.net.

Проблема в том, что я могу напрямую вводить значения в таблицу DGRegion, но как мне ввести ссылку на состояние в таблицу DGState?

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

Попробуйте что-то вроде этого:

CREATE PROCEDURE dbo.EnterLoginData(@Username VARCHAR(50), @Password VARCHAR(50),
                                    @ContactNo INT, @StateName VARCHAR(50)) 
AS BEGIN 
   DECLARE @StateID INT

   -- check if state already exists
   IF EXISTS(SELECT * FROM dbo.DGState WHERE DG_State = @StateName)

      -- if it exists - retrieve the DG_StateNo
      SELECT @StateID = DG_StateNo
      FROM dbo.DGState 
      WHERE DG_State = @StateName

   ELSE BEGIN

      -- if it doesn't exists - insert new row 
      INSERT INTO dbo.DG_State(DG_State) VALUES(@StateName);

      -- get the newly inserted row's ID using SCOPE_IDENTITY()
      SELECT @StateID = SCOPE_IDENTITY()
   END

   INSERT INTO 
       dbo.DGRegion(DG_Username, DG_Password, DG_ContactID, DG_StateNo)
   VALUES(@Username, @Password, @ContactNo, @StateID)
END
1 голос
/ 08 сентября 2011

В пр:

  • проверить, находится ли состояние в таблице состояний
  • если нет, поместите его в таблицу состояний
  • получить идентификатор (DG_stateno) таблицы состояний, помещенный в переменную
  • выполнить вставку
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...