Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

323
Views
¿Cómo puedo llenar filas de tablas vacías que hacen referencia a la ID de columna de otra tabla?

Quiero completar las configuraciones de notificación vacías para cada usuario que ya existe. Los ID (PK) son generados automáticamente por Hibernate en cada tabla. Aquí está la tabla de usuarios:

 CREATE TABLE lottery_user ( id int8 not null, email varchar(255) not null, password varchar(255) not null, notification_settings_id int8, role varchar (50) default 'USER', registry_date TIMESTAMP default now(), primary key (id) ADD CONSTRAINT FK_USER_TO_NOTIFICATION_SETTINGS FOREIGN KEY (notification_settings_id) REFERENCES notification_settings );

Y aquí está la tabla de configuración de notificaciones que debo completar para los usuarios que no la tienen completa.

 CREATE TABLE notification_settings ( id int8 not NULL , test1_events bool DEFAULT TRUE , test2_events bool DEFAULT TRUE , test3_events bool DEFAULT TRUE , test4_events bool DEFAULT TRUE , PRIMARY KEY (id) );

Básicamente, necesito usar "INSERT INTO notification_settings (test1_events, test2_events, test3_events, test4_events) VALUES (True, True, True, True)" algo similar a eso. Y, por supuesto, la condición debería ser algo como esto "donde estas filas están vacías para los usuarios". Parece que no puedo obtener la sintaxis correcta.

GRAN NOTA: el código SQL es para fines de presentación, por lo que puede tener una idea de qué tipo de tablas tengo. Solo necesito obtener el script INSERT correcto. Las tablas funcionan bien, solo es necesario generar valores de configuración de notificación para los usuarios que ya existen.

Otra nota: usar Flyway, por lo que no se trata solo de Hibernate. Si eso tiene que ver con algo.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

¿Estás buscando solo:

 INSERT INTO notification_settings (id) SELECT id FROM user WHERE id NOT IN (SELECT id FROM notifiation_settings)

Es posible que desee insertar en un campo de identidad:

 SET IDENTITY_INSERT my_table ON
over 4 years ago · Santiago Trujillo Report

0

Dado que su restricción de clave externa va de la configuración_notificación al usuario, la condición "donde estas filas están vacías para el usuario X" no se aplica a su esquema. Por otro lado, "Quiero completar las configuraciones de notificación vacías para cada usuario que ya existe" se puede hacer usando una construcción insert...select :

 set @rank=0 select @maxid = max(id) from notification_settings insert into notification_settings (id) select @maxid + @rank:=@rank+1 as rank from user where notification_settings_id is null

Lo que es interesante es cómo vuelve a colocar esas ID recién generadas en la tabla de usuarios. Tarea para la próxima vez :)

over 4 years ago · Santiago Trujillo Report

0

INSERTAR EN la configuración_notificación (id)

SELECCIONE u.id DESDE el usuario u DONDE
no existe (SELECCIONE * DESDE notifiation_settings ns donde ns.id=i.id)

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!