调用“身份”列而不插入源中的任何数据

时间:2019-02-14 05:34:42

标签: sql-server

我有一个表,在ID上设置了“身份”列 例如:

Create table Customer
(
  ID Int identity (1,1),
  FirstName varchar(20),
  PhNumber int,
)

我在其他数据库上有一个表,该表已填充 所以我写了类似的

Create or alter view abcCustomer 
As 
Select 
  ?  as ID
  Fname as FirstName,
  Pnumber as phnumber
From dbo.Scustomer (this is my table in source)

这里,我们仅在目标中创建ID列,但不确定如何调用或从源调用什么,以免影响AbcCustomer View并填充目标表中的身份记录以及源中的FirstName和phNumber桌子。

任何人都可以帮我代替?写什么,以便将我的表填充为标识列,因为除非并且直到我们从源调用ID列,否则它最终会出错。 / p>

2 个答案:

答案 0 :(得分:0)

有很多方法可以从源表中获取ID和其他数据!

  1. 使用条件条件(可以使用存储过程):

       Declare @i as int = 1
       Select Id, FName, PhNumber From dbo.SCustomer Where Id = @i
       set @i = @i+1
    
  2. 使用偏移量:

     Declare @i as int = 1
     Select Id, FName, PhNumber from Dbo.Sccustomer Order By Id Offset @i Rows Fetch 
     Next @i Rows Only
     Set @i = @i+1
    

答案 1 :(得分:0)

如果要将数据从源客户表插入目标客户表,则应以这种方式编写查询-

选项1-如果要使用与源表中相同的标识,请打开该标识,以便能够在标识列中插入值(请参阅下面的查询)

设置IDENTITY_INSERT客户打开

插入客户 (ID,名字,电话号码) 选择   ID作为ID   Fname为FirstName,   Pnumber作为phnumber 来自dbo.Scustomer

SET IDENTITY_INSERT员工已关闭

选项2-如果要在源表中生成新标识,请使用以下查询。

插入客户 (名字,电话号码) 选择   Fname为FirstName,   Pnumber作为phnumber 来自dbo.Scustomer