SQL вставить в таблицу специализации - PullRequest
0 голосов
/ 07 июня 2018

У меня есть таблица Person (idPerson int PK, Имя varchar (20)), и у меня есть дочерняя таблица Employee (idPerson int PK, Workplace varchar (20), ссылка на idPerson Person (idPerson)).Возможна ли прямая вставка в таблицу Employee, или мне нужно сначала вставить в таблицу Person, а затем вставить в Empolyee с соответствующим idPerson?Как я могу сделать эту вставку с процедурой и транзакциями?

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

У вас есть объявленная взаимосвязь внешнего ключа между двумя таблицами, поэтому при вставке вам понадобится действительный idPerson.

Единственное исключение будет, если у вас есть NULL или другое (допустимо) значение по умолчанию.Однако вы также объявили idPerson в качестве первичного ключа, поэтому он не может быть NULL.

Следовательно, ответ на ваш вопрос заключается в том, что вам необходимо вставить в Person перед вставкой в ​​Employee.Так вы объявили модель данных.

0 голосов
/ 07 июня 2018

попробуйте эту процедуру магазина.

CREATE PROCEDURE [dbo].[abcInsert]
    @idPerson INT ,
    @Name VARCHAR(255) = 'abc',
    @work VARCHAR (50)='abcb'
AS
    SET NOCOUNT ON                        


    BEGIN                


        INSERT  INTO dbo.Person WITH ( ROWLOCK )
                ( Name )
        VALUES  ( @Name )           

        DECLARE @ID INT                  

        SET @ID = @@IDENTITY    

        INSERT  INTO dbo.Employee WITH ( ROWLOCK )
                ( idPerson, Workplace )
        VALUES  ( @ID, @work )          



    END    
...