データベースの列を自動番号の主キーフィールドとして設定すると、自動番号設定機能によってこれらの値が変更できなくなりますか?自動インクリメントの整数主キーフィールドの値を変更することはできますか?
または、列の主キーの性質によって、変更不可能になりますか?
どちらも?どちらも?
データベースの列を自動番号の主キーフィールドとして設定すると、自動番号設定機能によってこれらの値が変更できなくなりますか?自動インクリメントの整数主キーフィールドの値を変更することはできますか?
または、列の主キーの性質によって、変更不可能になりますか?
どちらも?どちらも?
どちらもありません。あなたはそれを必要なだけ変更することができます。 autoincrementとして列を設定するだけで、新しい行のデフォルト値を指定するだけです。その後、通常の列のように機能します。
EDIT:明らかにこれはSQL Serverでは当てはまりませんが、指定しなかったので、普及した回答になっただけです。
いつものように、それはあなたのデータベースによって異なります。しかし、その答えはおそらくどちらもありません。 SQL Serverでの
、あなたは以下を使用しない限り、あなたは、ID列に手動で主キーを挿入することが制限されています
SET IDENTITY_INSERT [dbo].[MyTable] ON
INSERT INTO [dbo].[MyTable] (id, name) VALUES (1000, 'Foo')
SET IDENTITY_INSERT [dbo].[MyTable] OFF
これはかなりデータベースに依存しない問題だと思いました。驚いた。 – eggdrop
一般的なデータベースの比較があります:http://troels.arvin.dk/db/rdbms/#mix-identity –
それはDBに依存しないではありません。しかし、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;
どのデータベースを使用しているか –
私は、これが一般的な原則だと思って、全面的に適用されるでしょう。おそらくそれほど単純ではないでしょうか? – eggdrop
試したときに何が起こったのですか? –