0

これまでのところ理解できていません。プライマリ インデックスに UUID_SHORT を挿入しようとしているという重複エントリ エラー メッセージが表示されました。

id 列は整数 18 であり、UUID_SHORT は BEFORE_INSERT トリガーを使用して生成されます。

CREATE TRIGGER `TR_Documents_BI` BEFORE INSERT ON `documents`
FOR EACH ROW SET NEW.id = UUID_SHORT()

エラーは

 Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2147483647' for key 'PRIMARY'

データを BigInt で保存する必要があることを stackoverflow で読みましたが、生成された最初の UUID_SHORT が示すように、結果はそれほど説得力がありません。

95161384827879440 

nd 自動インクリメントのような次のものは

95161384827879440 + 1 

UUID_SHORT をプライマリ インデックスとして使用できない理由がわかりません。

ただし、UUID(); を生成する場合、問題は存在しません。

誰か助けてください。

編集: UUID_SHORT を整数として保存することはできません。しかし、BigInt(18) を使用すると、次のエントリが生成されました。

次のエラー メッセージが表示されます。

Warning: #1366 Incorrect integer value: '' for column 'id' at row 1

したがって、それはまだ私の列に格納された生成された UUID_SHORT() ではありません:(

4

2 に答える 2

0

を使用する必要がありますBIGINT。INT(18) はまだ 32 ビットであり、10 進数の 18 桁を保持できません。

UUID_SHORT の一意性については、マニュアルを確認してください。

于 2013-08-21T14:35:47.173 に答える