2016-09-20 13 views
-3

database diagramПроцедура SQL-SERVER Как я вставить строку одной таблицы затем вставить строку в другую ссылку таблицы в другую таблицу в качестве внешнего ключа

Для SQL-сервера Как я могу вставить SKU строку в таблице SKU_DATA, а затем вставить SKU в INVENTORY стол со всеми ветвями и количеством в руке = 2 и Quantityonhand = 0.

мне нужно вставить элемент SKU в SKUDATA и соответствуют строке в таблице инвентаризации для всех существующих ветвей Quantityonhand = 2 и Quantityonhand = 0.

Пожалуйста, помогите спасибо

ФИЛИАЛ

name varchar (30) not NULL, 
managerNum INT NOT NULL, 

SKU_DATA

SKU Int NOT NULL IDENTITY (1000,1), 
description varchar (40) NOT NULL UNIQUE, 
department varchar(30) NOT NULL default 'Home Entertainment', 
sellingPrice numeric (7,2) NOT NULL , 

ИНВЕНТАРЬ

SKU Int NOT NULL, 
branch varchar (30) NOT NULL , 
quantityOnHand Int NOT NUll , 
quantityOnOrder Int NOT NUll , 

Процедура:

Create procedure InsertNewSkuWithInventory 
    @description varchar (40), 
    @department varchar(30), 
    @sellingPrice numeric (7,2), 
AS 
    Declare @rowcount as int 
    Declare @SKU as int 
    Declare @branch as varchar(30) 

    Select @rowcount = COUNT(*) 
    from dbo.SKU_DATA 
    Where description = @description 
     And department = @department 
     And sellingPrice = @sellingPrice; 

BEGIN 
    INSERT INTO dbo.SKU_DATA (description, department, sellingPrice) 
    VALUES (@description, @department, @sellingPrice); 

    Select @SKU =SKU 
    From dbo.SKU_DATA 
    Where description = @description 
     And department = @department 
     And sellingPrice = @sellingPrice; 

    DECLARE SKUCursor CURSOR FOR 
     SET @branch = @@IDENTITY 

     Select SKU 
     From dbo.inventory 
     Where 

    CLOSE SKUCursor 
    DEALLOCATE SKUCursor 
END 
+1

Пожалуйста, прочтите [** Как к Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t А вот это прекрасное место, чтобы [** START ** ] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/), чтобы узнать, как улучшить качество вопроса и получить лучшие ответы. –

+0

читать [Транзакция] (https://msdn.microsoft.com/en-us/library/ms188929.aspx) –

+0

Какая это СУБД? Добавьте тег, чтобы указать, используете ли вы 'mysql',' postgresql', 'sql-server',' oracle' или 'db2' - или что-то еще. –

ответ

0

Есть две проблемы: во-первых, как получить сгенерированное значение IDENTITY для вновь вставленной строки в SKU_DATA таблицу, а второй, как одна строка в INVENTORY таблицы для каждой ветви.

Если вы вставляете только одну строку в SKU_DATA, используйте функцию scope_identity() (никогда не используйте @@ IDENTITY!). Как это:

INSERT INTO dbo.SKU_DATA (description, department, sellingPrice) 
VALUES (@description, @department, @sellingPrice); 
set @SKU = scope_identity() 

Тогда вы вставить в ИНВЕНТАРИЗАЦИЮ, выбрав из таблицы ОТРАСЛИ:

insert dbo.INVENTORY (SKU, branch, quantityOnHand, quantityOnOrder) 
select @SKU, b.name, 2, 0 
from dbo.Branch b 

Надеется, что вы можете работать полное решение из этого.

 Смежные вопросы

  • Нет связанных вопросов^_^