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になります。次に投稿するものはid2になります。

しかし、ユーザー2が投稿して記事を投稿した場合、彼のart_idは再び1になります。彼が次に投稿するのはID2です。最初のユーザー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

art_idをインクリメントする戦略は、自動インクリメントとは異なります。したがって、クエリでデフォルトのものを使用することはできません。TRIGGERただし、art_useridを使用してart_idONを更新すると書くことができます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 に答える
0

まあ、私はちょっとそれを解決しましたが、1つ少ない列で。このため、エンジンタイプは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 に答える