みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM13Serverで、複数のユーザーが使用している場合に、
ユーザーAがID(シリアル値) 100のレコードを作成
↓
似たタイミングでユーザーBが別レコード(ID=90)を雛形として、スクリプトでレコードを作成し、そこに全値をコピーする。
とした場合、
本来ユーザーBが後なので、基本作成したレコードのIDは101となるはずですよね。
この場合ID=100のレコードが作成される(=同じシリアル値で作成される)という事はありえるのでしょうか?
似たタイミングでユーザーBが別レコード(ID=90)を雛形として、スクリプトでレコードを作成し、そこに全値をコピーする。
これがイマイチ分からないのですが "雛形として" "全値をコピー" というのはどういう意味ですか?
単純にシリアル値の自動入力オプションのフィールド(ID)のあるテーブルに複数ユーザが同時にレコード作成するってことですか?
Last edited by Moz (2014-10-17 15:01:27)
Offline
オプションに作成時と確定時があるので、確定時だと作成順は関係なく確定順になるけど、どっちにしろ同じにはならないでしょう。
似たタイミングでユーザーBが別レコード(ID=90)を雛形として、スクリプトでレコードを作成し、そこに全値をコピーする。
これがイマイチ分からないのですが "雛形として" "全値をコピー" というのはどういう意味ですか?単純にシリアル値の自動入力オプションのフィールド(ID)のあるテーブルに複数ユーザが同時にレコード作成するってことですか?
すいません、修正前のが混在してました。
一旦最初から質問を修正させて下さい。
イメージ的には 現在のID=100(シリアル値・作成順)として、
ユーザAが新規レコードを作成し、
同時にユーザBがまた別のレコードを複写して、新規レコードを作成した場合
その場合のシリアル値はどのように扱われるのかなと。
その場合作成された2つのレコードのシリアル値は101、102としてどのような基準で振られるのか、
おそらくコンマ以下でも比較されてると思うので、そんな事は起こらないとは思うのですが・・・・
sorterさんが答えて下さっていますが複製でもシリアル値は重複しません。
注意点として、シリアル値の自動入力オプションを設定したフィールドがある場合は
該当テーブルのデータベースの定義でフィールドオプションのダイアログを開いている際に、
該当テーブルでは他のユーザのレコードの新規作成がロックされます。
※シリアル値の自動入力が設定されていない別のフィールドオプションを開いていても同様です。
Last edited by Moz (2014-10-17 17:45:19)
Offline
シリアルは被る可能性ありますよ。
過去何回か経験あります。
なので、絶対に被っちゃいけないリレーションキーにはシリアルは使わないようにしています。
常時ユニーク、と言う制限を付けておけば大丈夫。
Offline
常時、ユニーク、にしてても何度か被った経験あります。
20数クライアントから同時にガンガンレコードを追加していくようなシステムで。
あまりシリアル値自動入力は過信しないほうがいいと思っているんですが…
Pages: 1
[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 512.2 KiB (Peak: 516.74 KiB) ]