假设我有以下三个表:
CREATE TABLE user (
id INTEGER NOT NULL AUTO_INCREMENT,
/* ... */
PRIMARY KEY(id)
)
CREATE TABLE Account (
id INTEGER NOT NULL AUTO_INCREMENT,
user_id INTEGER NOT NULL,
/* ... */
PRIMARY KEY(id),
FOREIGN KEY(user_id) REFERENCES User(id)
)
CREATE TABLE Transfer (
id INTEGER NOT NULL AUTO_INCREMENT,
from_account INTEGER NOT NULL,
to_account INTEGER NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY(from_account) REFERENCES Account(id),
FOREIGN KEY(to_account) REFERENCES Account(id),
CONSTRAINT ???
/* SELECT id FROM Account WHERE id=from_account == SELECT id FROM Account WHERE id=to_account */
)
正如它所暗示的,转账应该引用两个账户,但我想确保这两个账户属于同一个人。创建表时如何解决这个问题?这甚至可能吗?