如何在MySQL列中存储查询,然后使用该查询?

时间:2012-06-30 21:59:42

标签: mysql sql database-design

例如,假设我正在创建一个存储发货站点促销代码的表格。我想让表格与代码的验证器匹配促销代码,例如

PROMO1: Order must have 3 items
PROMO2: Order subtotal must be greater than $50

我想将查询和/或例程存储在表格的列中,并且能够使用内容来验证,

SELECT * FROM Orders 
WHERE Promo.ID = 2 AND Promo.Validation = True

或者那种效果。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我不会将查询保存在数据库中,有更好的可能性。

您必须决定哪种最适合您的需求(根据您的问题,我不清楚)。你可以使用

Views

Prepared Statements

Stored Procedures

答案 1 :(得分:1)

可能有更好的方法来解决问题,但问题的答案是编写返回所需结果的存储过程。在我工作的地方(我讨厌这个设计),它们实际上存储了应用程序在存储过程中使用的所有查询和dml。

您还可以使用动态sql动态构建查询。对于MySql,请参阅下面的帖子,这可能对您有所帮助。

How To have Dynamic SQL in MySQL Stored Procedure

否则,您还可以在数据库中以字符串格式存储查询,并使用EXECUTE语句检索它们并执行它们,例如该帖子指出。

我个人远离这样的设计。在XML中存储查询并不是一个糟糕的选择,并且可以将您的应用程序编写为可扩展并可从XML进行配置,因此您无需更改代码即可添加新的验证逻辑,而只需在XML中进行配置即可。