0
我有一个SQL数据库,我将通过一次构建的LINQ进行交互。 它有一个客户谁拥有(忽略其他人)两个fkID字段到两个表。数据库体系结构问题
类
国家
我所试图做的是存储 “规则” 表,其中发生以下情况:
if the Class is 'A' and the Country is 'USA' then
create rows 'RowsA' in table todo
else if the class is 'A' and the country is not 'USA' then
create rows 'RowsB' in table todo
else
create rows 'RowsC' in table todo
那么,是最好的方式做到这一点在规则表中有
RuleID身份
ClassFK诠释 空
CountryFK诠释空
为了 INT NOT NULL
,并有我的C#代码执行以下操作:
var rules = from r in db.Rules
orderby r.order
select r;
foreach(rule in rules)
{
if (((client.ClassFK == rule.ClassFK) || (rule.ClassFK == null)) &&
((client.CountryFK== rule.CountryFK) || (rule.CountryFK== null)))
{
// Create The Rows
}
}
这对我来说似乎非常脆弱
如何使用TRIGGER?优点/缺点:对应用程序代码不太透明。 – 2009-08-25 17:39:32
我会建议不要使用触发器。我认为我没有遇到过使用触发器的正当理由,除非你想混淆下一个试图调试你的代码的程序员。 – Kelsey 2009-08-25 17:51:39
Kelsey,如果你的开发人员知道他们在做什么,那么使用触发器的很多好理由。复杂的数据完整性规则必须始终处于触发之中。在应用程序中处理它们是因为开发人员不理解数据库开发最多是不负责任的(还有其他方式将数据存入数据库,而不是应用程序!),最坏的情况是对公司的底线有害。数据完整性应该胜过开发者的无能。 – HLGEM 2009-08-25 20:27:18