【发布时间】:2012-02-29 11:52:22
【问题描述】:
我需要将许多表从 mySQL 转换为 SQL Server。
mySQL 表的示例是
CREATE TABLE `required_items` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique Barcode ID',
`fk_load_id` INT( 11 ) NOT NULL COMMENT 'Load ID',
`barcode` VARCHAR( 255 ) NOT NULL COMMENT 'Barcode Value',
`description` VARCHAR( 255 ) NULL DEFAULT NULL COMMENT 'Barcode Description',
`created` TIMESTAMP NULL DEFAULT NULL COMMENT 'Creation Timestamp',
`modified` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Modified Timestamp',
FOREIGN KEY (`fk_load_id`) REFERENCES `loads`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB CHARACTER SET ascii COLLATE ascii_general_ci COMMENT = 'Contains Required Items for the Load';
以及更新创建日期的触发器
CREATE TRIGGER required_items_before_insert_created_date BEFORE INSERT ON `required_items`
FOR EACH ROW
BEGIN
SET NEW.created = CURRENT_TIMESTAMP;
END
现在我需要在 SQL Server 中创建与此类似的表。似乎有很多不同的数据类型可用,所以我不确定使用哪个。
- 主键列应该使用什么数据类型 (唯一标识符,bigint,int)?
- 我应该为时间戳使用什么 (时间戳,数据时间,日期时间2(7))?
- 我应该如何执行创建的 和修改过的时间戳(目前我正在使用触发器)?
- 如何强制执行外键约束。
- 我应该在 SQL Server 中使用 Varchar(255) 吗? (也许 Text,Varchar(MAX) 更好)
我正在使用 Visual Studio 2010 创建表格。
【问题讨论】:
标签: sql-server