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
相关产品推荐
相关产品推荐

