2015-04-23 59 views
-2

我有两个表Table1Table2和表的结构填写第二表自动数据时在一个表中插入数据

Table1   
Primary Key | Name  

Table2   
Primary Key | Table1_Id_pk | Status - true/false value  

当我将数据插入Table2我想自动在table1从传送的数据Table2其中Status错误。

+0

触发可能是在这种情况下非常有用。 –

+0

触发器不好,避免它。对于这个简单的例子,请使用@@ identity .. – Ajay2707

+0

在插入期间,您希望从table2中的table1中复制哪些数据?你能举个例子吗? –

回答

0

您可以创建AFTER INSERTtrigger

CREATE TRIGGER DataMigration 
ON Table2 
AFTER INSERT 
AS 
BEGIN 

    INSERT INTO Table1 
    SELECT * 
    FROM TAble2 
    WHERe Status = 'false' 

END 
GO 
-1

检查这个例子中,使用@@identity得到插入行-ID,并使用该ID的子表。

declare @t1 table (pk int identity(1,1) not null , name varchar(50)) 
declare @t2 table (pk int identity(1,1) not null , t1pk int, status bit) 
declare @new_table1Id int 

insert into @t1 values('ajay') 

set @new_table1Id = @@IDENTITY -This gives you last inserted id of @t1 
insert into @t2 values(@new_table1Id , 0) 

select * from @t1 
select * from @t2 

Difference between @@IDENTITY vs SCOPE_IDENTITY() vs IDENT_CURRENT

+0

按照OP,他希望在t2中将数据从t2复制到t1时,状态='false',但在您的情况下,您正在将标识从t1复制到t2。 –

+0

如果可能,应该避免使用此解决方案,因为在大多数情况下数据是批量插入的。处理单个行肯定会损害性能。另外,如果要从多个存储过程插入数据,则需要编辑所有这些数据。 – gotqn

+0

谢谢你们,我现在不编辑。因为问题是错误的需要子表​​第一次,然后插入主表...我仍在等待由@Anumpam更新的问题 – Ajay2707

相关问题