如何创建表并在其中插入数据,但如果有表已经相同的名称只插入数据,不再创建表

时间:2015-10-11 14:24:36

标签: php mysql sql

//新问题

更新到这个问题:

提出这个问题的原因

我想在导航栏中创建一个按钮,其值是查看事务。 我想为每个客户创建特定的表格,以便轻松搜索其交易。

至于你的评论,我有一个想法,我将为所有客户创建1个表,使用$ _SESSION保存并知道谁订购了什么。为了让当前用户查看他的交易记录,我还将使用$ _SESSION来查看他的所有交易。问题是我不知道该怎么做。

//旧问题

我正在创建一个在线订购系统,如果客户订购它会将记录保存到mysql数据库。如果客户是新的,它没有特定于他的表,那么系统应该创建表并将数据插入表中。但如果客户是老客户并且已经有一个特定于他的表,系统就不必创建表,它只会在其中插入记录。

示例:

目前登录客户是$ _SESSION的约翰基地,他是新客户。 john order,但因为他是新客户,系统应该为john创建一个表并在表中插入记录。

然后下次john命令,系统不应该再创建表了,只需在john表中插入记录

你可以帮助我这样做:)

2 个答案:

答案 0 :(得分:1)

在MySQL中,您可以使用IF NOT EXISTS

CREATE TABLE IF NOT EXISTS your_table_name ...;

INSERT INTO your_table_name ...

使用SQL Server:

IF OBJECT_ID('your_table_name', 'U') IS NULL
  CREATE TABLE your_table_name ...;

INSERT INTO your_table_name ...;

警告:

为每个用户创建表是不好的做法。重新思考你的方法并制作一张桌子。

来自The Curse and Blessings of Dynamic SQL

  

CREATE TABLE @tbl

     

这里的愿望是创建一个名称已确定的表   在运行时。

     

如果我们只是查看反对在存储中使用动态SQL的参数   程序,其中很少有真正适用于此。如果存储   procedure中有一个静态的CREATE TABLE,运行该用户的用户   procedure必须具有创建表的权限,因此动态SQL会   没有改变什么。计划缓存显然与它无关。   等

     

尽管如此:为什么?你为什么想做这个? 如果你正在创作   你的应用程序中的表格,你已经错过了一些   关于数据库设计的基础知识。在关系数据库中,集合   表和列应该是不变的。它们可能会改变   安装新版本,但不能在运行时安装。

答案 1 :(得分:1)

I would suggest looking at this schema for your problemhere

保持实体分离,并且每次都必须创建新的客户表。

或者选中这个小提琴http://sqlfiddle.com/#!2/6ed32/3