Тут люди попросили чат им сделать, начал было делать а у них оборудование дернули поэтому чат не полный (дополнительные функции не сделаны) но все основное работает вроде!! Если че то не работает пишите!!! Дополнительные функции возможно будут потом !!!
»»» Скачать: исходные тексты (10кб)
Каскадные Update's в таблицах InterBase
Если Update не затpагивает ключевых(ссылочных) полей - то ничего стpашного и военного нет. Дpугое дело - если затpагивает. Тогда надобно пpоявить немного фантазии. Пеpвое, что пpиходит в голову - создать в pодительской таблице вpеменную запись(с заpанее оговоpенным ID) и пеpенести все ссылки из Child-таблицы на эту запись(до обновления). А после обновления - занести обpатно. CREATE TABLE Table1 ( ID INTEGER NOT NULL PRIMARY KEY, Name VARCHAR(25) ); CREATE TABLE Table2 ( ID INTEGER NOT NULL PRIMARY KEY, Table1ID INTEGER NOT NULL, Name VARCHAR(20), constraint fkTable2_Table1 FOREIGN KEY Table1ID REFERENCES Table1(ID) ); SET TERM ^ ; CREATE TRIGGER trbuTable1_BackUp before update as BEGIN if (OLD.ID <> NEW.ID) then update Table2 SET Table1ID = 0 where Table1ID = OLD.ID; END ^ CREATE TRIGGER trauTable1_Restore after update AS BEGIN if (OLD.ID <> NEW.ID) then update Table2 SET Table1ID = NEW.ID where Table1ID = 0; END ^ commit ^
.... Естественно, если возможен одновpеменный подобный Update в pазных одновpеменных тpанзакциях, то необходимо пpименить более изощpенный способ. Hо!.. IMHO, надо поступать немного по дpугому, что ОЧЧЕЬ упpостит опеpации в БД. адо пpосто составить пpоцедуpу, типа: CREATE PROCEDURE eprTable1_UpdateWithNewID ( OLDID INTEGER, NEWID INTEGER, Name VARCHAR (25) ) as BEGIN insert into Table1 (ID, Name) values (:NEWID, :Name); update Table2 SET Table1ID = :NEWID where Table1ID = :OLDID; delete from Table1 where ID = :OLDID; END ^
Комментарий от Max Rezanov [max@valley.ttn.ru] На ответ натолкнул меня PowerDesigner 7 Если почитать IB документацию то можно выловить следующую возможность по констраинтам, искать надо в ALTER TABLE name {ADD colname < datatype> [NOT NULL] | DROP colname | ADD CONSTRAINT constraintname tableconstraint | DROP CONSTRAIN!
T constraintname}; > > = [CONSTRAINT constraint] > [ ...] > = {UNIQUE | PRIMARY KEY > | CHECK ( ) > | REFERENCES other_table [( other_col [, other_col -])] > [ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}] > [ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}] > }
Список возможностей > Action specified Effect on foreign key > NO ACTION > [Default] The foreign key does not change (can cause the primary key update or delete to fail due to referential integrity checks) > CASCADE > The corresponding foreign key is updated or deleted as appropriate to the new value of the primary key > SET DEFAULT > Every column of the corresponding foreign key is set to its default value; fails if the default value of the foreign key is not found in the primary key > SET NULL > Every column of the corresponding foreign key is set to NULL
Говоря проще нам важна следующая возможность alter table ENTT_2 add constraint FK_ENTT_2_RLSH_1_ENTT_1 foreign key (ATTR_1) references ENTT_1 on update cascade on delete cascade; Полный SQL код для проверки ниже, При сменен PK на таблице ENTT_1 FK в таблице ENTT_2 меняется автоматом, про удаление я не говорю вобще Ж:))
create database "d:\SQLBASE\T1.GDB" user "sysdba" password "masterkey" page_size = 4096 default character set WIN1251;
Обзор формата DIB и компонентов для работы с ним.
Если вы когда-либо занимались программированием для Windows, то наверняка знаете, что растры (bitmaps) встречаются повсюду. Это происходит не только из-за того, что графический формат BMP является единственным, который непосредственно поддерживается Windows ( не считая значков (icons), возможности которых крайне ограничены). Просмотрите любое руководство по программированию для Windows, и вы найдете в нем такие функции, как CreateBitmap() , LoadBitmap() , StretchDIBits() и BitBlt() для создания, загрузки и вывода растров на экран, однако вы не обнаружите аналогичных функций для других графических форматов - например PCX, TIFF или GIF. Следовательно, вы не сможем сколько-нибудь заметно продвинуться в программировании игр для Windows, если не научитесь работать с растрами.
Delphi: специальный справочник
В книге содержится обширный справочный материал по основным элементам языка, включающий в себя наиболее употребительные функции, классы и объекты. Последовательно и подробно изложен процесс создания баз данных, Windows-приложений и динамических библиотек. Приложения с описанием различных кодов ошибок выполнения программ делает книгу полезной не только начинающим программистам, но и пользователям, активно работающим с Delphi
Автор: Б. Карпов
Дорогие друзья! Мы рады представить вам новый совместный проект сайтов www.rsdn.ru, delphi.mastak.ru и www.optim.ru - профессиональный журнал для программистов RSDN Magazine.
Несомненно, ваше мнение о необходимости такого журнала, содержании рубрик и темах отдельных статей поможет сделать журнал более полезным и интересным. Высказать свое мнение, проголосовать или же подписаться вы можете на сайте. Без вашего участия, нам будет трудно сделать правильный журнал!
Для души
Хокку дня
Для силы воли Послабленье - Бабье лето.
Афоризмы
Человек без зависти, не человек... (муж Тайны)
Фраза дня
Я женщина честная, доверилась компьютеру, а он меня обманул
И на закуску коротенький анекдот
Найден щенок бультерьера. Большая просьба к хозяевам: ЗАБЕРИТЕ ПОСКОРЕЕ ЭТУ СВОЛОЧЬ!