Форум "DataBase и SQL"
Язык запросов баз даных
IBкак правильно написать скрипт? хочу сразу кучу табличек создать CREATE TABLE "ScladW\ARTIKYL" ( GRUP CHAR(5) CHARACTER SET WIN1251 NOT NULL COLLATE WIN1251_UA, ART CHAR(15) CHARACTER SET WIN1251 NOT NULL COLLATE WIN1251_UA, NAME VARCHAR(30) CHARACTER SET WIN1251 NOT NULL COLLATE WIN1251_UA ); CREATE TABLE "ScladW\BASES_03" ( ARM CHAR(2) CHARACTER SET WIN1251 NOT NULL COLLATE WIN1251_UA, TASK CHAR(20) CHARACTER SET WIN1251 NOT NULL COLLATE WIN1251_UA, NAME_DBF CHAR(8) CHARACTER SET WIN1251 NOT NULL COLLATE WIN1251_UA, NAME_NTX CHAR(8) CHARACTER SET WIN1251 NOT NULL COLLATE WIN1251_UA, INDEX VARCHAR(100) CHARACTER SET WIN1251 NOT NULL COLLATE WIN1251_UA, MESSAGE VARCHAR(40) CHARACTER SET WIN1251 NOT NULL COLLATE WIN1251_UA ); на втором create почему-то ругаеца. видимо, надо как-то их разделять, или в чем дело?
|
|
#1 Офигевший 25.04.06 13:27:59
SET SQL DIALECT 3; SET NAMES WIN1251; CREATE DATABASE "basa.GDB" USER "SYSDBA" PASSWORD "masterkey" PAGE_SIZE 8192; Create Table Artikul ( id Integer not null, Grup varchar(5), Art varchar(15), Name varchar(30), PRIMARY KEY (ID) ); В таком виде проще и наглядней. |
|
уже разобрался, вроде. насчет наглядности - так я его шо, сам пишу? программно, надо базку перегнать, разовая операция. табличек просто до чертиков, а уж полей в них - уууу!!! ужос! |
|
#3 maximus © 25.04.06 14:00:29
с эксперта можно скрипт выгрузить только таблиц... быстро и удобно. |
|
попутно вопрос: хочу логические поля в табличку засунуть, но в ИБ их нету. потому думаю их сэмулировать, так: CREATE TABLE "аааа" ( "CODE" CHAR(1) DEFAULT 'F' NOT NULL); теперь хочу проверку тудой прикрутить, шоб токо 'T' и 'F' можно было туда засунуть. как? надыбал конструкцию CHECK,только как ее использовать правильно? |
|
#5 Офигевший 25.04.06 14:16:51
#2 Паша © 25.04.06 15:54:23 Я думал это человек настолько ошизел, что такой код (см. 0) пишет. |
|
> #5 Офигевший гы. программка на экранчик такой код пишет да, так шо с ограничением вносимых данных? вот, нарыл: CREATE DOMAIN PRODTYPE AS VARCHAR(12) CHECK (VALUE IN (’software’, ’hardware’, ’other’, ’N/A’)); CREATE DOMAIN DEPTARRAY AS CHAR(31) [4:5]; правда, не пойму смысла [4:5]... а для поля можно что-то в этом роде слепить? вроде как можно, токо синтаксиса нигде не нашел. |
|
#7 Офигевший 25.04.06 14:52:27
Кажись четыре слова по пять символов |
|
#8 Офигевший 25.04.06 14:55:37
хотя нет, фигня это |
|
|
|
#10 maximus © 25.04.06 15:14:49
CREATE DOMAIN BOOLEAN_1 AS CHAR(1) CHARACTER SET WIN1251 DEFAULT 'T' CHECK (VALUE IN ('T', 'F')) я не пойму, ты все руками пишеш или в ИБ эсперте? |
|
#11 Офигевший 25.04.06 15:16:39
CHARACTER SET WIN1251 эту фигню надо вынести в самое начало сценария. |
|
так, с check-ом разобралсо. и даже фурычит! > ты все руками пишеш или в ИБ эсперте? руками пускай пишет кто-нить другой. у меня порядка 300 табличек, так я до пенсии эту муру писать буду, как думешь? программно, конвертор написал, делов |
|
Рекомендую делать вот так: CREATE DOMAIN BOOLEAN AS Integer DEFAULT 0 NOT NULL CHECK (VALUE IN(0, 1)) причем домен назвать именно BOOLEAN. В будущем можеит пригодится, если будешь работать с FIB~ами (компоненты такие под Firebird/Interbase). Эти компоненты эмулируют работу с полями такого домена именно как с булевскими. |
Написать ответ |
|
