PEAKTOP peaktops...@gmail.com
сообщил/сообщила в новостях следующее: news:ihslcg$b9o$1...@dough.gmane.org...
EXECUTE BLOCK AS
DECLARE VARIABLE P_SQL_STMT BLOB SUB_TYPE TEXT;
BEGIN
IF(EXISTS(
SELECT P.RDB$PROCEDURE_ID
FROM RDB$PROCEDURES P
WHERE (P.RDB$PROCEDURE_NAME='PROC$_DB_GIUD')
))THEN EXIT;
P_SQL_STMT =
'CREATE OR ALTER PROCEDURE PROC$_DB_GUID RETURNS (
'||ASCII_CHAR(13)||ASCII_CHAR(10)||
' GUID VARCHAR(38) '||ASCII_CHAR(13)||ASCII_CHAR(10)||
')AS '||ASCII_CHAR(13)||ASCII_CHAR(10)||
'BEGIN '||ASCII_CHAR(13)||ASCII_CHAR(10)||
' GUID = '''||UUID_TO_CHAR(GEN_UUID())||''';
'||ASCII_CHAR(13)||ASCII_CHAR(10)||
' SUSPEND; '||ASCII_CHAR(13)||ASCII_CHAR(10)||
'END';
EXECUTE STATEMENT :P_SQL_STMT;
END
Хоть при каждом запуске приложения выполняй.
А если настоящий шахид, то можно тело блока вообще в триггер ON CONNECT
впихнуть.
Тут как-бы не про это было. А что при создании базы СЕРВЕРОМ ей назначается
гуид, который нельзя поменять.