You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nextcloud PHP建表代码转MySQL:主键与索引写法咨询

Nextcloud PHP建表代码转MySQL语句指南

核心疑问解答

som_pk的含义

som_pk是这个复合主键的自定义名称,原PHP代码里的第二个参数就是用来指定主键的标识名,方便后续维护时识别这个主键。

MySQL中主键名称的写法

在MySQL里,可以在定义主键时直接指定名称,语法是PRIMARY KEY [主键名] (字段列表),对应原代码里的som_pk。

完整转换后的MySQL语句

结合原PHP代码的所有字段约束、主键和索引设置,最终的建表语句如下:

CREATE TABLE nextcloud.oc_systemtag_object_mapping (
    objectid VARCHAR(64) NOT NULL DEFAULT '',
    objecttype VARCHAR(64) NOT NULL DEFAULT '',
    systemtagid INT(4) UNSIGNED NOT NULL DEFAULT 0,
    -- 对应原PHP代码的自定义主键名som_pk
    PRIMARY KEY som_pk (objecttype, objectid, systemtagid),
    -- 对应原PHP代码的普通索引systag_by_tagid
    INDEX systag_by_tagid (systemtagid, objecttype)
);

关键细节补充

  • 原PHP中systemtagid的约束要完整同步:unsigned对应MySQL的UNSIGNED,length=4对应INT(4),同时保留NOT NULL DEFAULT 0的设置
  • 原PHP代码中被注释的addUniqueIndex,对应的MySQL语法是UNIQUE INDEX mapping (objecttype, objectid, systemtagid),但因为这三个字段已经是主键(主键本身具备唯一性),所以这个唯一索引属于冗余设置,这也是原代码注释掉它的原因

内容的提问来源于stack exchange,提问作者Simon2019

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 00:58:26