为 SQL Server 抓取数据时更改 mySQL 表并添加列是不是正常? [关闭]

Posted

技术标签:

【中文标题】为 SQL Server 抓取数据时更改 mySQL 表并添加列是不是正常? [关闭]【英文标题】:Is it normal to Alter a mySQL table and ADD columns when grabbing data for SQL Server? [closed]为 SQL Server 抓取数据时更改 mySQL 表并添加列是否正常? [关闭] 【发布时间】:2013-01-23 04:06:54 【问题描述】:

我有一个 mysql 数据库,一旦登录,它就会从在线用户那里接收数据。数据表是这样创建的......

CREATE TABLE   
IF NOT EXISTS `results` (
       `id` INT(11) NOT NULL AUTO_INCREMENT,
       `patient_id` CHAR(10) NOT NULL,
       `login_id` CHAR(7) NOT NULL,
       `result_date` date NOT NULL,
       `result` VARCHAR(4) NOT NULL,
       created_at TIMESTAMP NOT NULL,
       PRIMARY KEY(`id`)
   ) DEFAULT CHARSET = utf8 COMMENT = 'List of Member Test Results'
    ;

完成后,我们的 IT 经理决定更改我的数据库和 php 代码,以便他可以轻松地将数据提取到他的 SQL Server 数据库中。我的问题有两个,这是否必要,这样做是否存在潜在问题。

他改变的东西;将 result_date 从 date 更改为其他数据类型,因此他可以在我的端以 SQL Server 格式输入。他更改了时间戳/创建时间,因此他的更改不会更新时间戳,并且他添加了一个布尔/计数器列,因此他的数据库知道它是否已从该行中提取。此外,他添加了第三个日期(日期类字段为非日期类型),因此当他从我的数据库中提取时,他可以标记那个时间。

对我来说,这不仅看起来有点矫枉过正,而且还迫使我允许更改我的数据库。最后,我被骂“你为什么要使用created_at timestamp NOT NULL”。不想在这件事上喊别人,但这个问题让我有点困惑。

【问题讨论】:

1) 不是建设性问题(需要意见而不是事实)。 2) 你的 IT 经理是个白痴。 听起来就像 IT 经理参与代码时会发生什么。 是的......白痴(他......穴居人谈话)。日期就是日期,更改它们是一个滑坡。 created_at 很好。当使用带有触发器的单个 modified_time 时,他似乎还添加了 2 列,这将允许两端的代码更简单,而不会不必要地污染您的系统。 完全没有必要。你的 IT 经理的方法告诉我他/她的知识已经生疏了。 【参考方案1】:

正如其他人在 cmets 中指出的那样,您的 IT 经理似乎没有那么敏锐。为了简化他的事情,他为什么不直接在 ImportIDFromMySQL 的 SQL 表中添加一列并使用您的自动增量。在那里,他有或没有。至于关心日期/时间戳,他应该只将额外的列添加到他的“漂亮”表中,而不要管你的生产内容。

有时 bean-counter 经理真的很难应付。

【讨论】:

【参考方案2】:

更改数据库并进行更改是可以的。但是,我的建议是创建镜像数据库,然后他可以在镜像数据库上做他想做的事。改变数据库的结构可能会导致很多层面的很多问题。在更改、删除、截断或使用与删除和更新语句相关的任何功能之前,请始终备份您的数据库。

您的 IT 经理应该已经创建了一个镜像数据库。好吧,继续前进他仍然可以。

【讨论】:

以上是关于为 SQL Server 抓取数据时更改 mySQL 表并添加列是不是正常? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

mysql 导入数据是报错:2006 - MySQL server has gone away

更改 SQL Server DB 中列的数据类型时出错 - Java

更改默认登录 SQL Server Management Studio (SSMS)

SQL SERVER 2008 如何将字符集更改为UTF-8

数据库排序规则更改问题 (SQL Server 2008)

在 SQL Server Management Studio 中更改 SQL Server 数据库中的列属性