2012-02-29 2 views
1

У меня есть несколько таблиц, которые мне нужно преобразовать из mySQL в SQL Server.Исправить SQL для преобразования таблиц 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. Кажется, что существует много разных типов данных, поэтому я не уверен, что использовать.

  • Какой тип данных следует использовать в столбце первичного ключа (uniqueidentifier, bigint, int)?
  • Что следует использовать для временных меток (timestamp, datatime, datetime2 (7))?
  • Как я должен применять созданные и измененные метки времени (в настоящее время я использую триггеры)?
  • Как я могу принудить ограничения внешнего ключа.
  • Должен ли я использовать Varchar (255) в SQL Server? (Может быть, текст, Varchar (MAX) лучше)

Я использую Visual Studio 2010 для создания таблиц.

ответ

0

Прежде всего, вы, вероятно, можете использовать PHPMyAdmin (или что-то подобное) для сценария процесса создания таблицы для SQL Server. Вы можете взглянуть на то, что автоматически создается для вас, чтобы получить представление о том, что вы должны использовать. После этого вы должны взглянуть на SSMS (SQL Server Management Studio) на Visual Studio 2010. Тонкая настройка таблиц, создаваемых вашим скриптом, будет проще в SSMS - на самом деле, большинство задач по созданию базы данных будут проще в SSMS.

Какой тип данных следует использовать для столбца первичного ключа (uniqueidentifier, bigint, int)? В зависимости от того, сколько записей вы планируете иметь в своей таблице, используйте int или bigint. Есть проблемы с уникальными людьми, которых вы, вероятно, захотите избежать. INT vs Unique-Identifier for ID field in database

Что следует использовать для временных меток (timestamp, datatime, datetime2 (7))? Временные метки в SQL Server различны, чем в MySQL. Несмотря на имя, временная метка - это увеличивающееся число, которое используется как механизм для строк версии. http://msdn.microsoft.com/en-us/library/ms182776%28v=sql.90%29.aspx. Короче говоря, datetime, вероятно, лучше всего подходит для целей совместимости.

Как следует применять созданные и измененные временные метки (в настоящее время я использую триггеры)? См. Выше. Кроме того, версия SQL Server «Timestamp» автоматически обновляется СУБД. Если вам нужна временная метка, похожая на вашу версию MySQL, вы можете использовать триггер для этого (но это, как правило, нахмурило ... вроде догматического).

Как я могу обеспечить ограничение внешних ключей. Вы должны относиться к ним так же, как к использованию innoDB. См. Эту статью для примеров создания ограничений внешнего ключа http://blog.sqlauthority.com/2008/09/08/sql-server-%E2%80%93-2008-creating-primary-key-foreign-key-and-default-constraint/

Должен ли я использовать Varchar (255) в SQL Server?(Может быть, текст, Varchar (MAX) лучше) Это зависит от данных, которые вы планируете хранить в поле. Varchar max эквивалентен varchar (8000), и если вам не нужен varchar (255), вы всегда можете установить его на меньшее значение, например varchar (50). Слишком большой размер поля имеет последствия для производительности. Следует отметить, что если вы планируете поддерживать уникодовые (многоязычные) данные в своей области, используйте nvarchar или nchar.

Смежные вопросы