首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入带有子类型的SuperType

插入带有子类型的SuperType
EN

Stack Overflow用户
提问于 2011-06-03 18:47:17
回答 4查看 1.4K关注 0票数 1

我目前正在使用一个使用子类型/超类型结构的db。我想知道处理插入件的最佳方法。我是将多个表的填充保存在SQL本身中,还是使用PHP,甚至是两者的组合?

我正在使用MySQL / PHP (w/ Yii框架)

/编辑/

我不知道投反对票会有什么结果。没有意识到任何表格的重要性,因为这是一个一般的方法问题。但这里有一个例子。如果创建了一个缔约方,那么业务和用户如何使用该PartyId进行填充?SQL/PHP/两者都是?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-04 10:13:25

“标准”方法是为每个子类型创建一个可更新的视图。每个可更新的视图都用一个子类型连接该超级类型。

然后,应用程序代码通常使用视图,而不是基表。

在大多数平台上,这意味着您需要编写一些触发器。

票数 2
EN

Stack Overflow用户

发布于 2011-06-03 22:40:20

我完全不明白你的问题是什么。

如果需要在Party表上添加一行,则需要:

代码语言:javascript
复制
INSERT INTO party [...]

如果您需要插入到业务中,您可以这样做

代码语言:javascript
复制
INSERT INTO business [...]

就这么简单,是的。

如果您希望安全,那么两个查询都将运行,启动一个事务。

票数 0
EN

Stack Overflow用户

发布于 2011-06-04 04:54:16

我猜既然你把它放在Yii标签上,你真的在用Yii?通常要做的事情是为每个类创建一个activerecord类。您仍然需要将生成的PartyId传输到其他两个类中的一个。大多数情况下,这是通过分配完成的。

代码语言:javascript
复制
$oTransaction = Yii::app()->db->beginTransaction;
$oParty->save();
if ($oParty->PartyType == ...)
{
   $oBusiness->BusinessId = $oParty->PartyId;
   $oBusiness->save();
}
else
   Do User things
$oTransaction->commit();

也许最好这样做,甚至可以在AR类上使用继承,但我不知道这样做是否会节省任何工作。最好是给您的Party模型一个函数,这个函数可以返回业务实例,也可以返回用户实例。

最干净的方法也是在部件的afterSave()方法中保存业务/用户,这里有PartyId。但是你的政党模型需要有数据才能做到这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6231350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档