0

我正在尝试根据 art_userid 自动增加下表中的 art_id,这是否可能不编写任何额外的 php 代码?gen_id 必须保留并且不能被删除。我正在使用 Mysql 和 Php

CREATE TABLE `articles` (
        `gen_id` INT(10) NULL AUTO_INCREMENT,
        `art_id` TINYINT(3) NULL DEFAULT '0',
        `art_userid` INT(10) NULL DEFAULT '0',
        `art_title` VARCHAR(150) NULL DEFAULT NULL,
        PRIMARY KEY (`gen_id`)

所以最后,如果用户 1 发布了一篇文章,他的 art_id 将为 1。他发布的下一篇文章的 id 为 2。

但是如果用户 2 发布和文章,他的 art_id 将再次为 1。他发布的下一个将具有 id 2。不是第一个用户 art_id 的延续。

gen_id | art_id | art_userid | art_title
-----------------------------------------
1         1        1           Title A
2         2        1           Title B
3         1        2           Title A
4         2        2           Title B
5         3        1           Title A
4

4 回答 4

0

好吧,我有点解决了,但少了一列。为此,引擎类型需要是 MyIsam。然后像这样创建:

CREATE TABLE `articles` (
    `art_id` INT(10) NOT NULL AUTO_INCREMENT,
    `art_userid` INT(10) NOT NULL DEFAULT '0',
    PRIMARY KEY (`art_userid`, `art_id`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM;

然后,当您插入 art_userid 时,您将为每个用户获得一个从 1 开始的 art_id 的唯一值。

于 2012-08-16T03:53:34.123 回答
0

您增加 art_id 的策略与自动增加不同。所以你不能在查询中使用默认值。但是你可以写,这将使用 art_useridTRIGGER更新 art_id 。INSERT

于 2012-08-14T05:44:58.197 回答
0

在这种情况下,您应该做一个表格,将用户和文章与每个 ID 链接起来。

因为这里没有自动增量,它只是一个数据管理:)

问候

于 2012-08-14T05:46:24.197 回答
0

更常见的方法是

CREATE TABLE `articles` (
        `id` INT AUTO_INCREMENT, -- entry in table
        `gen_id` INT(10) NULL ,
        `art_id` TINYINT(3) NULL DEFAULT '0',
        `art_userid` INT(10) NULL DEFAULT '0',
        `art_title` VARCHAR(150) NULL DEFAULT NULL,
        PRIMARY KEY(`id`)
)

使用id columnin 表,以便您指定条目通过查询增加用户的总文章 UPDATE total_articles SET total_articles=total_articles+1 WHERE userid=1

于 2012-08-14T05:52:15.153 回答