在mysql中使用带有表前缀的触发器/例程

时间:2011-01-28 04:24:30

标签: php mysql database database-design


我习惯在我的php脚本中使用mysql表前缀。然而触发器和例程有时也非常有用。好。假设我有一张桌子:'pre_customers'。并且程序类似于

CREATE FUNCTION `get_all_clients`() RETURNS int(11)
    BEGIN
    DECLARE sum INT ;
    SELECT COUNT(id) INTO sum FROM pre_customers ;
    RETURN sum;
END

没什么大不了的,仅举例来说。而且还有一个常数

<?php
define( 'DB_PREFIX', 'pre_' ) ;

它用于更改表前缀。如果我需要在脚本中创建一个sql-request,我就像这样做

$query = "SELECT * FROM " . DB_PREFIX . "customers" ;
$result = mysql_query( $query ) ;
...

好吧,但如果我想在php脚本中更改此前缀以及表名,它将破坏所有存储的例程和触发器,它们仍将适用于'pre_customers'表。所以问题是程序员通常如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

  

所以问题是通常的做法是程序员通常如何解决这个问题。

  • 创建转储
  • 使用该转储创建某种模板,pre_替换为%db_prefix%
  • 当您需要更改前缀时 - 在模板中替换前缀并将其导入mysql