ID 증가 기능을 사용하는 기본 키 열이있는 기존 테이블이 있습니다. 새로운 레코드가 생성 될 때 자동 증가 열에 다른 번호를 붙일 수 있도록 어떻게 든 열을 업데이트하는 방법이 있습니까? 예를 들어 생성 된 다음 레코드가 기본 키 450016을 생성하는 경우 접두어 13을 사용하여 DB에 저장되는 최종 결과가 13450016이됩니다.자동 증분 열 앞에 숫자를 붙이는 방법
답변
항상 동일한 번호가 접두어로 있어야하기 때문에 다시 시드 할 수 없습니다. 제가해야 할 일은 제안 된 것들이 혼합 된 것입니다.내가 할 일은 기본 키 열의 이름을 바꾸고 새 열을 만들고 이전 기본 키 열의 이름에 이름을 지정한 다음 ID 값이 무엇이든 새 열 값을 업데이트하는 트리거를 추가하는 것입니다 지정된 번호 접두사. 내 주요 문제 중 하나는 내 기본 키 열 이름을 참조하는 코드가 너무 많아서 이름을 바꿔 이름을 변경해야한다는 것입니다. 모두에게 감사드립니다!
"나는 새로운 계산 된 열을 만드는 대신 ID 열을 실제로 조작하는 방법 "이라고 설명했습니다.
신원 열은 꽤 완고합니다. 이런 식으로하고 싶다면 모든 것을 새로운 테이블에 복사하는 것이 가장 좋습니다. 13을 접두어로 붙이려면, 실제로하고있는 일은 존재하는 모든 것에 13000000을 더하고 거기에서부터 세는 것입니다.
CREATE TABLE tbl (ID INT IDENTITY,Val INT)
INSERT INTO tbl VALUES (1),(1)
SELECT * FROM tbl
CREATE TABLE tbl2 (ID INT IDENTITY,Val INT)
SET IDENTITY_INSERT tbl2 ON
INSERT INTO tbl2 (ID,val)
SELECT ID+1300000, Val
FROM tbl WITH (HOLDLOCK TABLOCKX)
SET IDENTITY_INSERT tbl2 OFF
DROP TABLE tbl
EXECUTE sp_rename N'tbl2', N'tbl', 'OBJECT'
SELECT * FROM tbl
INSERT INTO tbl VALUES (1),(1)
SELECT * FROM tbl
DROP TABLE tbl
경우, 대신 당신은 그냥 그대로 존재하는 모든 것을 떠나 만들기 위해 신원을 시드하려면 다음 13xxxxxx에서 다음 레코드 별이 대신 당신은 다시 시드 할 수 있습니다
CREATE TABLE tbl (ID INT IDENTITY,Val INT)
INSERT INTO tbl VALUES (1),(1)
SELECT * FROM tbl
DBCC CHECKIDENT ('tbl', RESEED, 1300002);
INSERT INTO tbl VALUES (1),(1)
SELECT * FROM tbl
DROP TABLE tbl
이 할 수 있다면 여러번 있지만 접미사가 항상 시드 값을 늘려야하므로 뒤로 이동할 수 없습니다.
(1) 기타 테이블이 기본 키를 참조하지 않는 당신이 행 (숫자가 순차적)이 삭제되지 않은 :
은 어쩌면 수 있습니다 4 가지 방법이 있습니다. (2) 다른 테이블은이 기본 키를 참조하지 않지만 숫자는 순차적이지 않습니다 (행이 삭제되었습니다). (3) 숫자는 순차적이지만 다른 테이블은이 기본 키를 참조합니다. (4) 참조 및 삭제 된 행이 모두 있습니다.
이러한 방법으로 열을 교체 할 수 있습니다. 는 그러나 테이블의 이름 (당신이 바로 데이터베이스에있어 확인과 TABLENAME을 교체하고 작은 따옴표를 유지대로
EXEC sp_fkeys 'tablename'
코드를 사용하여 테이블에이 chex를 실행하는
시도 점수).
이 저장 프로 시저에 표시된 행이 있으면 외래 키 제약 조건을 일시적으로 삭제해야합니다. FK_Name 컬럼을 참조하고이 컬럼에있는 값을 나열하십시오. 행을 생성하는 경우 예를 알려주십시오.
그런 다음 다음 코드를 실행합니다 : 그것은하지만 우리가 작업중인 실제 열 이름으로 NAME_OF_ID_COLUMN을 교체하고 열이있는 테이블의 이름 TABLE_NAME 교체 될 때SELECT TOP 1 NAME_OF_ID_COLUMN - ROW_NUMBER()OVER(ORDER BY ID) AS NSEQ
FROM TABLE_NAME ORDER BY NSEQ DESC
코드를 사용합니다.
NSEQ 열의 값이 0이면 삭제하지 않은 경우, 1이면 삭제됩니다.
원할 경우 의견에 답을 알려 주시면 관련 코드를 정렬 해 드리겠습니다.
- 1. 숫자 앞에 0을 붙이는 방법
- 2. 레일 : 범위가있는 자동 증분 열
- 3. 무비 클립에 숫자를 붙이는 방법
- 4. 자동 증분 두 개의 열
- 5. html, 1 열 자동 증분 번호 지정
- 6. 자동 증분 열 값으로 테이블에 삽입
- 7. 자동 증분 테이블의 열 이름을 선택하십시오.
- 8. 앞에 0을 붙이는 동안 % h로 정수를 형성
- 9. 자동 증분 C#
- 10. 자동 증분 행 번호
- 11. 조인에서 모든 열 이름의 접두사를 붙이는 방법
- 12. 많은 언어로 변수 앞에 붙이는 축약 논리
- 13. MySQL에서 테이블의 자동 증분 열을 재설정하는 방법
- 14. Confluence- 자동 증분 컬럼을 테이블에 추가하는 방법
- 15. Swift에서 stringWithFormat을 사용하여 url 앞에 http : //를 붙이는 방법
- 16. iOS : 자동 증분 NSString
- 17. PHP 자동 증분 양식 제출시
- 18. 주문 입력을위한 증분 테이블 열
- 19. 자동 증분 열이있는 mysql insert
- 20. 카스 산드라 데이터베이스의 자동 증분 ID
- 21. SSRS 차트의 각 열에 레이블을 붙이는 방법
- 22. 텍스트 파일에 머리글을 붙이는 방법
- 23. 문자열 내에서 증분 숫자를 추출하는 정규식
- 24. 양식 자동 증분
- 25. 자동 증분 ID JSON
- 26. 자동 증분 직원 ID
- 27. 자동 증분 번호
- 28. 자동 증분 ID의 필요성
- 29. 기본 키 자동 증분
- 30. greenDao 자동 증분 ID를받습니다
그리고 왜 이것을하고 싶습니까? –
여기에 귀하의 옵션에 대한 토론이 있습니다. http://www.sqlteam.com/article/custom-auto-generated-sequences-with-sql-server – Gavin
접두어를 붙이려면 ID 값의 마지막 두 자리가 필요합니다. 자릿수 앞에 붙일 수 있습니까? – RajeshKannan