私が理解すると、column
はデフォルトでsigned int
になります。mysqlのAUTO_INCREMENTはデフォルトで署名できますか?
id INT(6);
以下に指定するauto increment column
にデフォルトで署名を付けることはできますか? Mysqlは、自動増分列の値を1から開始します。
私が理解すると、column
はデフォルトでsigned int
になります。mysqlのAUTO_INCREMENTはデフォルトで署名できますか?
id INT(6);
以下に指定するauto increment column
にデフォルトで署名を付けることはできますか? Mysqlは、自動増分列の値を1から開始します。
はい、自動インクリメントのプライマリキーを署名付きintで作成できます。これを試してください。
CREATE TABLE mytable(id int(6) AUTO_INCREMENT PRIMARY KEY);
そして次のクエリは、これは-10の値として1を持つ相互に列を有するテーブルをもたらす有効
INSERT INTO mytable values();
INSERT INTO mytable values(-10);
の両方です。しかし、これを試すと問題に遭遇します。
ALTER TABLE mytable AUTO_INCREMENT=-10;
はい、負の数である自動増分値を持つことはできません。
多くの検索の後に...私は、前に呼ばれたトリガーで解決策を探しました!私はこれを見つけた:ここhttps://stackoverflow.com/a/43441586/2282880
は私の変種です:
CREATE TRIGGER `invertID`
BEFORE INSERT ON `<table>`
FOR EACH ROW SET NEW.id=CONCAT("-", (
SELECT `auto_increment`
FROM INFORMATION_SCHEMA.TABLES
WHERE table_name = '<table>')
)
それは罰金私のために働きました。
これは、私のテーブルに同じIDを持たない同じスキーマを持つ2つのデータベースを両方向で同期させるために見つけた最良の方法でした。
なぜあなたはそれを試していないのですか? – Jens