【问题标题】:MySQL: best way to save more than 60 values to different tablesMySQL:将 60 多个值保存到不同表的最佳方法
【发布时间】:2018-02-25 23:43:29
【问题描述】:

我想制作一个应用程序来将手写的纸质合同保存在我的数据库中。每份合约都有超过 60 个值要保存。我已经用 15 个带有主键和外键的表创建了数据库。我的问题是使用一个过程或多个查询来保存所有这些数据的最佳方法是什么。

我尝试的是创建一个存储过程并将所有这些值作为参数传递。然后在我调用并传递所有值的 php 中执行一个查询,如下所示:

CALL SaveContract(11111, "Name", "Surname", 22222, "User", "Password", 'm', "2017-09-06", "norm", "sup", "asac", 29, 5, 7, 125, 3, 123456, 456789, "kiss", "bot", 123, "en", "ram", 33333, "aaaaa", "bbbb", 'm', "2017-09-12", "ccccc", "dddddd", null, null, null, null,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null , 1,null , 1, null,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null , 10, '["","",""]')

虽然我在运行此过程时遇到错误(#1436 - 线程堆栈溢出),但解决此错误并不是本问题的目标。

将所有参数传递给存储过程会很好。

我正在尝试找到一种在存储过程中一次执行所有操作的解决方案,也许进行多个 INSERT 查询更简单,但可能有更好的方法

【问题讨论】:

  • 你需要15张桌子吗?
  • 不,我需要将合同值保存在我的数据库中,该数据库有 15 个表和所有这些值的字段。我的问题是我不知道如何更好地保存所有这些值,可能使用一个查询调用存储过程并将所有值作为参数传递,而不是使用过程登录来保存所有数据,但我收到错误 #1436 - 线程堆栈超限
  • @MarkBannister 不,它不是重复的,我正在尝试创建一个存储过程并将 60 多个参数传递给它,然后我将值保存在我的数据库表中,我的问题是怎么做当我有这么多值时,这是正确的,使用存储过程很好,或者有更好的方法
  • @MarkBannister 我稍微编辑了我的问题,我的问题是找到保存超过 60 个值的合同的最佳方法
  • 编辑问题以强调解决错误不是重点。

标签: php mysql sql mysqli phpmyadmin


【解决方案1】:

我希望我明白你的意思,你可以通过两种不同的方式做到这一点 -

一种是编写一个将所有 60 个值作为参数的过程,并在过程中使用插入查询,您可以将数据动态插入到所有 15 个表中。

否则,您可以在一个主表上使用“插入后”编写触发器,并在该触发器中使用输入查询将数据插入到多个表中。

【讨论】:

  • 对所有字段都是键的表使用触发器是个好主意。谢谢
  • 我想这应该不是问题,我已经处理了许多带有很多键的大型(模式)表,并且有任何问题。
猜你喜欢
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 2016-06-30
  • 2014-02-19
相关资源
最近更新 更多