Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL Id列_Mysql_Auto Increment - Fatal编程技术网

MySQL Id列

MySQL Id列,mysql,auto-increment,Mysql,Auto Increment,我正在做一个升级现有系统的项目 现有数据库结构必须保持完整,因为有一个系统读取的数据库与新系统上使用的数据库相同 我正在使用一个PHP框架构建一个新的CMS/管理系统,该框架期望看到所有DB表自动增量ID字段名为“ID”-我不想修改PHP处理任何其他名称为“ID”的字段-相信我,这将是一个巨大的任务 现有数据库具有非标准的自动增量ID字段命名,例如: “iBmsId”-shcema:i=INT Bms=表的名称,Id=Id 我可以对数据库本身做些什么来复制“iBmsId”列,创建一个名为“id”

我正在做一个升级现有系统的项目

现有数据库结构必须保持完整,因为有一个系统读取的数据库与新系统上使用的数据库相同

我正在使用一个PHP框架构建一个新的CMS/管理系统,该框架期望看到所有DB表自动增量ID字段名为“ID”-我不想修改PHP处理任何其他名称为“ID”的字段-相信我,这将是一个巨大的任务

现有数据库具有非标准的自动增量ID字段命名,例如: “iBmsId”-shcema:i=INT Bms=表的名称,Id=Id


我可以对数据库本身做些什么来复制“iBmsId”列,创建一个名为“id”的匹配列,该列具有相应的INT值吗?这样,我的新系统将按预期运行,而无需进行严重的重新写入,同时现有系统仍能与数据库通信?

在这种情况下,您可以使用VIEW:)

dbms中的视图就像一个虚拟表(除非是物化的)。视图添加了一个新的抽象层,它可以支持如何使用数据库和如何实现数据库之间的独立性。它还可以提高安全性,例如隐藏一些字段或使视图为只读

注意:为了透明地添加视图,您可以重命名原始表并使用原始表名称创建视图。这样可以避免修改现有代码


您可以阅读如何创建可更新和可插入的视图(可以像普通表一样工作)。

如果一次只有一个系统在修改该值,则可以使用以下视图:

create view v_table as
    select t.*, iBMid as id
    from table t;
据推测,自动递增的值不会被更新,因此这应该是安全的。但是,请记住:

更具体地说,如果视图包含以下任何内容,则该视图不可更新:

  • 对基表任意列的多个引用

这可能会影响您可能希望以相同方式处理的其他列。

您可以在iBmsId上使用插入触发器,将插入的值插入到您所谓的“id”列中。新系统是否只读取
id
值,还是也对其进行修改?新系统将输入新条目,自动递增将负责ID的编号。系统不应更改ID值。@Codegeek,插入触发器似乎更像我所想的,这可以在两个方向上完成,即插入新记录,自动递增列被赋予ID,然后复制到ID列,反之亦然?