2011-01-29 3 views
0

どのようにPHP/mySQLで列を別の列と同じにすることができますか?MySQLの1つの列が別のですか?

idは自動増分で、xidは一意でなければなりません。 SQLでxid = idを作ることはできますか? (この理由は、変更を記録することですが、必要であれば、私はより多くを説明します)

+----+-----+----------+----------------+------+---------+ 
| id | xid | title | body   | page | visible | 
+----+-----+----------+----------------+------+---------+ 
| 1 | 1 | my title | my body  | NULL |  1 | 
| 2 | 2 | my title | my body edited | 1 |  0 | 
+----+-----+----------+----------------+------+---------+ 

$queryX = "INSERT INTO table (xid, title, body, page, visible) 
VALUES (, 'Plays', 'it's playing', 'book page', 1)"; 
+2

...ではない、また、IDと、私は必要性をundestandかなり確実に行うことができます私はあなたが少し説明する必要があると思いますこれを達成するために何をしようとしていますか? – diagonalbatman

+0

Andyが正しいです。なぜなら、お互いに常に等しいテーブルに2つの列を持つ必要があると思う理由はありません。 – JohnFx

+0

これは1NFのルールに反しますか? – Drewdin

答えて

4

私は理由を理解していないXID独特の最善の方法は、IDの自動インクリメントをコピーすることであるようにするにはあなたはこれをやりたいが、私のアプローチは、2つのクエリとLAST_INSERT_ID()を使用することになります

INSERT INTO table (title, body, page, visible) 
VALUES ('Plays', 'it''s playing', 'book page', 1); 
UPDATE table SET xid = id WHERE id = LAST_INSERT_ID(); 

あなたはそれを手動で行う必要はありませんので、あなたは、TRIGGERを使用してこれを行うことができます。 1つのクエリで

+1

私は今まで見たことがある場合は、弾を求めて足があります。 =) – JohnFx

0

:それはユニークなXIDを置く

 
INSERT INTO table (xid, title, body, page, visible) VALUES 
(SELECT MAX(xid) + 1, ....) 

、私は

関連する問題