我想在tableA中定义columnA的值,以获得tableB中tableB.columnB所有行的计数
我有两张桌子:
articles table
columns: articleId,numComments
comments table
columns: articleId,content
Run Code Online (Sandbox Code Playgroud)
我希望表"articles"中的numComments列包含表注释中所有行的计数 articles.articleId=comments.articleId
我是否需要将其中任何一个设置为"innodb"?
我是否需要将其中任何一个设置为"innodb"?
是! InnoDB是唯一支持外键的mysql引擎.你必须做以下事情:
ALTER TABLE comments ADD CONSTRAINT
FOREIGN KEY (articleId)
REFERENCES articles(articleId);
Run Code Online (Sandbox Code Playgroud)
或者如果您只是创建表:
CREATE TABLE comments
(articleId INT,
content INT,
FOREIGN KEY (articleId)
REFERENCES articles(articleId);
ON DELETE CASCADE // You probably want the comments to be deleted,
// whenever the article is deleted
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)
请参阅:http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html
而对于numComments列:最好做一个
SELECT count(articleId) FROM comments WHERE articleId=selectedArticleId;
Run Code Online (Sandbox Code Playgroud)