복붙노트

[SQL] SQL Server 테이블은 두 개의 ID 열을 가질 수 있습니까?

SQL

SQL Server 테이블은 두 개의 ID 열을 가질 수 있습니까?

나는 기본 키로 한 열이 필요하고 자동차에 대한 또 다른 주문 번호 필드를 증가. 이게 가능해?

편집 : 난 그냥 주문 번호로 복합 번호를 사용 것 같아요. 어쨌든 고마워.

해결법

  1. ==============================

    1.

    CREATE TABLE [dbo].[Foo](
        [FooId] [int] IDENTITY(1,1) NOT NULL,
        [BarId] [int] IDENTITY(1,1) NOT NULL
    )
    

    보고

    Msg 2744, Level 16, State 2, Line 1
    Multiple identity columns specified for table 'Foo'. Only one identity column per table is allowed.
    

    그래서, 더, 당신은 두 개의 ID 열이 수 없습니다. 당신은 물론 기본 키가 아닌 자동 증가 (정체성) 할 수 있습니다.

    편집 : MSDN : (2000 SQL 서버) TABLE (Transact-SQL)를하고 테이블을 만듭니다

  2. ==============================

    2.당신이 2012 SQL 서버 사용하는 경우는 기본 값으로 두 번째 열의 순서를 사용할 수 있습니다

    당신이 2012 SQL 서버 사용하는 경우는 기본 값으로 두 번째 열의 순서를 사용할 수 있습니다

    --Create the Test schema
    CREATE SCHEMA Test ;
    GO
    
    -- Create a sequence
    CREATE SEQUENCE Test.SORT_ID_seq
        START WITH 1
        INCREMENT BY 1 ;
    GO
    
    -- Create a table
    CREATE TABLE Test.Foo
        (PK_ID int IDENTITY (1,1) PRIMARY KEY,
        SORT_ID int not null  DEFAULT (NEXT VALUE FOR Test.SORT_ID_seq));
    GO
    
    INSERT INTO Test.Foo VALUES ( DEFAULT )
    INSERT INTO Test.Foo VALUES ( DEFAULT )
    INSERT INTO Test.Foo VALUES ( DEFAULT )
    
    SELECT * FROM Test.Foo 
    
    -- Cleanup
    --DROP TABLE Test.Foo
    --DROP SEQUENCE Test.SORT_ID_seq
    --DROP SCHEMA Test
    

    http://technet.microsoft.com/en-us/library/ff878058.aspx

  3. ==============================

    3.한 ID 열을 추가하고, 그 수식 식별 컬럼의 이름 계산 열을 추가

    한 ID 열을 추가하고, 그 수식 식별 컬럼의 이름 계산 열을 추가

    이제 모두가 동시에 증가합니다

  4. ==============================

    4.아니, 하나 이상의 ID 열을 가질 수 없습니다.

    아니, 하나 이상의 ID 열을 가질 수 없습니다.

    엔터프라이즈 관리자는 심지어> 설정하는 방법을 허용 ID로 1 열 수 없습니다. 두 번째 열은 신원 이루어질 때

    @@ IDENTITY 하나 이상의 ID 열이 테이블에 대해 수 있다면 의미가있을 것이다 열려있는 연결의 마지막 ID 값을 반환 유의하십시오.

  5. ==============================

    5.

    create table #tblStudent
    (
        ID int primary key identity(1,1),
        Number UNIQUEIDENTIFIER DEFAULT NEWID(),
        Name nvarchar(50)
    )
    

    두 ID 열 수 없습니다하지만 당신은 고유 식별자 열을 사용하도록 동의하면 다음이 코드는뿐만 아니라 동일한 작업을 수행합니다. 또한 당신은 여분의 열을 필요로 - 이름 값을 삽입 칼럼 -.

    사용 예제 :

    insert into #tblStudent(Name) values('Ali')
    
    select * from #tblStudent
    

    PS : NEWID () 함수는 고유 식별자 타입의 고유 한 값을 생성한다.

  6. ==============================

    6.기본 키는 ID 열 필요는 없습니다.

    기본 키는 ID 열 필요는 없습니다.

    두 신원 열을 가질 수 없습니다.

    당신은 당신이 트리거로 원하는 뭔가 가까이를 얻을 수 ...

  7. ==============================

    7.SQL 서버가 ID로 하나 이상의 열을 가질 수 없습니다.

    SQL 서버가 ID로 하나 이상의 열을 가질 수 없습니다.

  8. ==============================

    8.난 그냥 같은 테이블에 두 개의 ID를 삽입 할 수 있도록하는 코드를 만들었습니다. 내가 그것을 도움이 경우에 당신과 함께 그것을 공유 할 수 있습니다 :

    난 그냥 같은 테이블에 두 개의 ID를 삽입 할 수 있도록하는 코드를 만들었습니다. 내가 그것을 도움이 경우에 당신과 함께 그것을 공유 할 수 있습니다 :

    create trigger UpdateSecondTableIdentity
    On TableName For INSERT
    as
    update TableName
    set SecondIdentityColumn = 1000000+@@IDENTITY
    where ForstId = @@IDENTITY;
    

    감사,

  9. ==============================

    9.해결 방법은 카운터를 증가는 INSERT 트리거를 생성하는 것입니다.

    해결 방법은 카운터를 증가는 INSERT 트리거를 생성하는 것입니다.

    나는 하나 명의 신원 COL이있는 테이블이 그래서 : applicationstatusid. 그 또한 기본 키. 나는 자동 증가 다른 COL 원하는 : applicationnumber를

    그래서이 트리거 I 쓰기입니다.

     create trigger [applicationstatus_insert] on [ApplicationStatus] after insert as 
           update [Applicationstatus] 
           set [Applicationstatus].applicationnumber =(applicationstatusid+ 4000000) 
           from [Applicationstatus] 
           inner join inserted on [applicationstatus].applicationstatusid = inserted.applicationstatusid
    
  10. from https://stackoverflow.com/questions/349092/can-a-sql-server-table-have-two-identity-columns by cc-by-sa and MIT license