Вы определили первичный ключ дважды. Попробуйте:
CREATE TABLE SHIPPING_GRID(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique ID for each row',
shipping_vendor_no INT(6) NOT NULL COMMENT 'Foreign key to VENDOR.no for the shipping vendor (vendors_type must be 3)',
start_vendor_no INT(6) NOT NULL COMMENT 'Foreign key to VENDOR.no for the vendor being shipped from',
end_vendor_no INT(6) NOT NULL COMMENT 'Foreign key to the VENDOR.no for the vendor being shipped to',
shipment_duration INT(1) DEFAULT 1 COMMENT 'Duration in whole days shipment will take',
price FLOAT(5,5) NOT NULL COMMENT 'Price in US dollars per shipment lbs (down to 5 decimal places)',
is_flat_rate TINYINT(1) DEFAULT 0 COMMENT '1 if is flat rate regardless of weight, 0 if price is by lbs',
INDEX (shipping_vendor_no),
INDEX (start_vendor_no),
INDEX (end_vendor_no),
FOREIGN KEY (shipping_vendor_no) REFERENCES VENDOR (no),
FOREIGN KEY (start_vendor_no) REFERENCES VENDOR (no),
FOREIGN KEY (end_vendor_no) REFERENCES VENDOR (no)
) TYPE = INNODB;
первичный ключ ПОСТАВЩИКА должен быть INT (6), и обе таблицы должны иметь тип InnoDB.
Я думаю, что можно использовать var
, где это упрощает чтение кода, что для меня означало бы, что тип, который заменяет var
должно быть совершенно очевидным.
Например, это было бы хорошим использованием var
(надуманный пример):
var thing = new Dictionary<int, KeyValuePair<string, int>>();
Однако это было бы плохим использованием var
:
var thing = GetThingFromDatabase();
Это то же самое Дело в том, что при использовании ключевого слова var переменная неявно типизируется, а компилятор определяет тип во время сборки. Я предпочитаю указывать тип, а не использовать var в большинстве случаев, поэтому я меняю свои настройки resharper.
Насколько я помню, Решарпер просто сказал, что это может быть написано таким образом. Это не говорит о том, что вы должны.
Множество предложений - это просто предложения, от которых я отказался, когда впервые увидел их .. Это одно из них.
Еще одно было сказано, что писать "this.someProperty" излишне, а я думаю, что от этого код станет легче читать.
Resharper также предлагает преобразовать выражение if в истинное или неверное. Практически то же самое, но это зависит от вашего стиля программирования. Итак, когда вам будет удобнее использовать var - воспользуйтесь этим предложением.
Я считаю это полезным в некоторых случаях, когда объявление типа очень длинное, например:
Dictionary<int, string> item = new Dictionary<int, string>();
становится
var item = new Dictionary<int, string>();