2009-05-30 7 views
0

데이터베이스 열을 자동 번호 기본 키 필드로 설정하면 자동 번호 매기기 기능이 해당 값을 수정할 수 없게합니까?자동 증가 정수 기본 키 필드의 값을 변경할 수 있습니까?

또는 열의 기본 키 특성으로 인해 수정할 수 없습니까?

둘 다? 둘 다?

+1

어떤 데이터베이스를 사용하고 있는지 말하십시오. –

+0

나는 이것이 전체적으로 적용될 수있는 일반적인 원칙이라고 생각했다. 아마도 그렇게 간단하지 않을까요? – eggdrop

+1

시도 할 때 어떤 일이 일어 났습니까? –

답변

2

아니요. 원하는대로 수정할 수 있습니다. autoincrement로 열을 설정하면 새로운 행의 기본값 만 지정됩니다. 그 후에는 정상적인 열처럼 작동합니다.

편집 : 분명히 이것은 SQL Server에서는 사실이 아니지만 사용자가 지정하지 않았기 때문에 대중적인 답을 얻었습니다.

4

언제나 귀하의 데이터베이스에 따라 다릅니다. 그러나 그 대답은 아마도 아니다. 다음 사용하지 않는

SQL 서버에서

, 당신은 식별 컬럼에 수동으로 기본 키를 삽입 제한됩니다

SET IDENTITY_INSERT [dbo].[MyTable] ON 
INSERT INTO [dbo].[MyTable] (id, name) VALUES (1000, 'Foo') 
SET IDENTITY_INSERT [dbo].[MyTable] OFF 
+0

나는 이것이 데이터베이스와 관련없는 문제라고 생각했다. 놀랐어. – eggdrop

+1

일반적인 데이터베이스 비교는 다음과 같습니다. http://troels.arvin.dk/db/rdbms/#mix-identity –

1

하면 자동 증가를 찾으시는 것입니까? MySQL의에서

없이 MS-SQL에서

,
예는 DB에 독립적이 아니다

+0

자동 증가, 예. – eggdrop

1

(엔진에 따라 달라질 수 있습니다). 그러나 MySQL과 (예를 들어) SQLite는 당신이 자동 증가 기본 키를 수정할 수 :

MySQL의 :

create table foo (id INTEGER AUTO_INCREMENT, PRIMARY KEY(id)); 
insert into foo values (null); 
select * from foo; 
update foo set id = 2 where id = 1; 
select * from foo; 

SQLite는 (AUTOINCREMENT 실제로 무엇을 의미하는지에 대한 http://www.sqlite.org/faq.html#q1 참조) : 최상의 결과를

create table foo(id INTEGER PRIMARY KEY AUTOINCREMENT); 
insert into foo VALUES(null); 
select * from foo; 
update foo set id = 2 where id = 1; 
select * from foo; 
관련 문제