В настоящее время я автоматически генерирую запросы, которые, как предполагается, передаются в базу данных postgres, так что таблицы и данные в них могут быть сохранены и извлечены, когда это необходимо.
У меня есть один столбец, который я генерирую, называемый entry_name - который в моем случае, кажется, генерируется неправильно по какой-то странной причине?
Итак, в моем запросе - то, что я ожидаю, это то, что entry_name
становится тем же именем, что и запись в столбце work_type
- но в моем случае это кажется чем-то совершенно другим? - какая-то странная комбинация адреса электронной почты, номера телефона и т. д. c? и я не совсем понял, почему это происходит?
Так что весь запрос здесь
-- Create table with EntityId
CREATE TABLE IF NOT EXISTS public.Personal
(personal_id BIGSERIAL PRIMARY KEY);
-- Create table_registration
CREATE TABLE IF NOT EXISTS public.Personal_registration
(
personal_id bigint REFERENCES Personal(personal_id),
row_id BIGSERIAL PRIMARY KEY,
valid tsrange,
registration tsrange,
registration_by varchar(255)
);
-- Autogenerated column
DO
$$
BEGIN
IF NOT EXISTS (SELECT FROM pg_attribute
WHERE attrelid = 'public.Personal_registration'::regclass -- table name here
AND attname = 'work_type' -- column name here
AND NOT attisdropped
) THEN
ALTER TABLE public.Personal_registration
ADD COLUMN work_type text NULL;
ELSE
ALTER TABLE public.Personal_registration
ALTER COLUMN work_type TYPE text;
END IF;
END
$$;
-- Autogenerated column
DO
$$
BEGIN
IF NOT EXISTS (SELECT FROM pg_attribute
WHERE attrelid = 'public.Personal_registration'::regclass -- table name here
AND attname = 'contact_email_address' -- column name here
AND NOT attisdropped
) THEN
ALTER TABLE public.Personal_registration
ADD COLUMN contact_email_address text NULL;
ELSE
ALTER TABLE public.Personal_registration
ALTER COLUMN contact_email_address TYPE text;
END IF;
END
$$;
-- Autogenerated column
DO
$$
BEGIN
IF NOT EXISTS (SELECT FROM pg_attribute
WHERE attrelid = 'public.Personal_registration'::regclass -- table name here
AND attname = 'contact_mobile_number' -- column name here
AND NOT attisdropped
) THEN
ALTER TABLE public.Personal_registration
ADD COLUMN contact_mobile_number text NULL;
ELSE
ALTER TABLE public.Personal_registration
ALTER COLUMN contact_mobile_number TYPE text;
END IF;
END
$$;
-- Autogenerated column
DO
$$
BEGIN
IF NOT EXISTS (SELECT FROM pg_attribute
WHERE attrelid = 'public.Personal_registration'::regclass -- table name here
AND attname = 'contact_phone_number' -- column name here
AND NOT attisdropped
) THEN
ALTER TABLE public.Personal_registration
ADD COLUMN contact_phone_number text NULL;
ELSE
ALTER TABLE public.Personal_registration
ALTER COLUMN contact_phone_number TYPE text;
END IF;
END
$$;
-- Create Generated column
ALTER TABLE public.Personal_registration
DROP COLUMN IF EXISTS entry_name,
ADD COLUMN entry_name TEXT generated ALWAYS as (CASE WHEN work_type IS NULL THEN NULL
ELSE work_type END) stored;
-- Insert an entry
INSERT INTO public.Personal DEFAULT VALUES RETURNING personal_id;
INSERT INTO Personal_registration (personal_id,registration,registration_by,valid,work_type,contact_email_address,contact_mobile_number,contact_phone_number)
VALUES (1,
tsrange('0001-01-01T00:00:01', '9999-01-01T00:00:02'),
'Tester',
tsrange('0001-01-01T00:00:01', '9999-01-01T00:00:02'),
'postman',
'dummy@dummy.com',
'123456',
'654321')
RETURNING personal_id,registration,registration_by,valid,work_type,contact_email_address,contact_mobile_number,contact_phone_number, entry_name;
И выполнение этого возвращает это
Это, хотя и не всегда согласованно, - иногда это комбинация почты и номера или т. Д. c?
Я действительно понятия не имею, что происходит не так - и почти потратили 3 дня, чтобы выяснить это?