AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-128169

Sarov's questions

Martin Hope
Sarov
Asked: 2024-08-28 23:28:29 +0800 CST

Qual é a melhor maneira de testar credenciais?

  • 5

Tenho um aplicativo C# em que preciso validar credenciais para um banco de dados DB2 (V7R3).

Historicamente, a maneira como fazemos isso é anexar as credenciais a uma sequência de conexão e tentar conectar ao banco de dados para ver se a conexão é bem-sucedida ou falha.

Mas existe uma maneira melhor de fazer isso, como uma API para testar credenciais ou algo assim?

authentication
  • 1 respostas
  • 14 Views
Martin Hope
Sarov
Asked: 2023-09-07 04:18:04 +0800 CST

Por que não consigo criar uma coluna gerada com uma expressão CASE? [duplicado]

  • 5
Esta pergunta já tem respostas aqui :
Como adicionar coluna gerada à tabela DB2? (2 respostas)
Fechado há 8 horas .

Estou tentando adicionar uma coluna gerada a uma tabela na V7R3 do IBM DB2:

ALTER TABLE MYLIB.MYTABLE
    ADD COLUMN NEW_COL VARCHAR(255) GENERATED ALWAYS AS (
        COALESCE(
            CASE
                WHEN ENV = 'A' THEN (SELECT GUIDE_URL FROM MYLIBA.PROGRAM WHERE CODE = PGM)
                WHEN ENV = 'B' THEN (SELECT GUIDE_URL FROM MYLIBB.PROGRAM WHERE CODE = PGM)
                ELSE (SELECT GUIDE_URL FROM MYLIBC.PROGRAM WHERE CODE = PGM)
            END
            , URL
        )
    )

Mas está dando o seguinte erro:

 Estado SQL: 42601 Código do fornecedor: -199 Mensagem: [SQL0199] Palavra-chave WHEN não esperada. Tokens válidos: . ACCTNG USERID APPLNAME PROGRAMID WRKSTNNAME. Causa . . . . . : A palavra-chave WHEN não era esperada aqui. Um erro de sintaxe foi detectado na palavra-chave WHEN. A lista parcial de tokens válidos é . ACCTNG USERID APPLNAME PROGRAMID WRKSTNNAME. Esta lista pressupõe que a afirmação está correta até a palavra-chave inesperada. O erro pode estar no início da instrução, mas a sintaxe da instrução parece ser válida até este ponto. Recuperação . . . : examine a instrução SQL na área da palavra-chave especificada. Um dois-pontos ou um delimitador SQL podem estar faltando. SQL exige que palavras reservadas sejam delimitadas quando usadas como nome. Corrija a instrução SQL e tente a solicitação novamente.

Estou fazendo algo errado? Ou é simplesmente impossível criar tal coluna gerada no 7.3? Atualizar para 7.5 ajudaria? Tentei encontrar detalhes sobre quais colunas geradas podem ser criadas em quais versões, mas não consegui encontrar nada nos documentos.

db2
  • 1 respostas
  • 12 Views
Martin Hope
Sarov
Asked: 2023-08-05 03:03:40 +0800 CST

Consulta para agrupamento comparando a soma do valor do grupo, parando quando a quantidade é atingida

  • 4

Tentando calcular valores para um relatório FIFO. Existe uma maneira de usar o SQL para agrupar dados de forma que você compare a soma de um valor específico com valores diferentes para cada grupo, incluindo apenas parte de uma linha, se necessário?

Solicitação: Para cada número de item, ordene os itens comprados em ordem decrescente por data e obtenha o valor máximo de modo que a soma das quantidades seja = a quantidade vendida para esse número de item, tomando apenas uma parte da linha final, se necessário obter as quantidades correspondentes. Em seguida, gere um resultado contendo ItemNumber, NumShipments e CostSum (que é a soma do produto de CostPer e Quantity) para o estoque restante que não foi vendido.

Por exemplo, considere o seguinte esquema:

CREATE TABLE MYLIB.TOTAL_ITEM_SOLD (ITEM_NUMBER VARCHAR(15) NOT NULL NOT HIDDEN , QUANTITY_SOLD DECIMAL(5, 2) NOT HIDDEN , PRIMARY KEY (ITEM_NUMBER)  ) NOT VOLATILE UNIT ANY KEEP IN MEMORY NO ;

CREATE TABLE MYLIB.ITEM_PURCHASE (ITEM_NUMBER VARCHAR(15) NOT NULL NOT HIDDEN , DATE_ORDERED TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP NOT NULL NOT HIDDEN , QUANTITY DECIMAL(4, 2) NOT NULL NOT HIDDEN , COST_PER DECIMAL(10, 2) NOT NULL NOT HIDDEN , PRIMARY KEY (DATE_ORDERED, ITEM_NUMBER) ) NOT VOLATILE UNIT ANY KEEP IN MEMORY NO ;

INSERT INTO MYLIB.TOTAL_ITEM_SOLD (ITEM_NUMBER, QUANTITY_SOLD) VALUES ('APPLE', 5);

INSERT INTO MYLIB.ITEM_PURCHASE (ITEM_NUMBER, QUANTITY, COST_PER) VALUES ('APPLE', 2, 1.23);
INSERT INTO MYLIB.ITEM_PURCHASE (ITEM_NUMBER, QUANTITY, COST_PER) VALUES ('APPLE', 4, 2.34);
INSERT INTO MYLIB.ITEM_PURCHASE (ITEM_NUMBER, QUANTITY, COST_PER) VALUES ('APPLE', 2, 5.55);

Resultado esperado:

{ITEM_NUMBER: "APPLE", QTY_REMAINING: 3, COST_SUM: 13.44}

Porque 5,55+5,55+2,34 = 13,44.

db2
  • 1 respostas
  • 35 Views
Martin Hope
Sarov
Asked: 2023-08-02 05:55:03 +0800 CST

Consulta para agrupamento comparando a soma do valor do grupo

  • 5

Existe uma maneira de usar o SQL para agrupar dados de forma que você compare a soma de um valor específico com valores diferentes para cada grupo?

Por exemplo, considere o seguinte esquema:

Table: ITEM
Columns:
    ITEM_NUMBER (VARCHAR(15))
    QUANTITY_ON_HAND (DECIMAL(5,2))
Primary Key: ITEM_NUMBER

Table: ORDER_ITEM_REQUIREMENTS
Columns:
    ITEM_NUMBER (VARCHAR(15), Foreign Key to ITEM)
    DATE_ORDERED (TIMESTAMP)
    QUANTITY (DECIMAL(4,2))
    COST_PER (DECIMAL(10,2))
Primary Key: ITEM_NUMBER+DATE

Solicitação: Para cada número de item, ordene os requisitos do item do pedido em ordem crescente por data e obtenha o valor máximo de modo que a soma das quantidades seja <= a quantidade disponível para esse número do item (obtenha todos os requisitos do item do pedido se a soma é menor que a Quantidade disponível). Em seguida, imprima um resultado contendo ItemNumber, NumShipments, QtySum e CostSum (que é a soma do produto de CostPer e Quantity).

Se for importante, estamos usando o IBM DB2 Versão 7 Revisão 3.


Por exemplo, dados os seguintes dados:

{ITEM_NUMBER: "APPLE", QUANTITY_ON_HAND: 5}
{ITEM_NUMBER: "APPLE", DATE_ORDERED: Jan 1, 12:01, QUANTITY: 2, COST_PER: 1.23}
{ITEM_NUMBER: "APPLE", DATE_ORDERED: Jan 1, 12:02, QUANTITY: 2, COST_PER: 2.34}
{ITEM_NUMBER: "APPLE", DATE_ORDERED: Jan 2, 12:03, QUANTITY: 2, COST_PER: 5.55}

Ou em termos de SQL:

CREATE TABLE MYLIB.ITEM (ITEM_NUMBER VARCHAR(15) NOT NULL NOT HIDDEN , QUANTITY_ON_HAND DECIMAL(5, 2) NOT HIDDEN , PRIMARY KEY (ITEM_NUMBER)  ) NOT VOLATILE UNIT ANY KEEP IN MEMORY NO ;

CREATE TABLE MYLIB.ORDER_ITEM_REQUIREMENTS (ITEM_NUMBER VARCHAR(15) NOT NULL NOT HIDDEN , DATE_ORDERED TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP NOT NULL NOT HIDDEN , QUANTITY DECIMAL(4, 2) NOT NULL NOT HIDDEN , COST_PER DECIMAL(10, 2) NOT NULL NOT HIDDEN , PRIMARY KEY (DATE_ORDERED, ITEM_NUMBER) , FOREIGN KEY (ITEM_NUMBER) REFERENCES MYLIB.ITEM (ITEM_NUMBER) ON DELETE NO ACTION ON UPDATE NO ACTION  ) NOT VOLATILE UNIT ANY KEEP IN MEMORY NO ;

INSERT INTO MYLIB.ITEM (ITEM_NUMBER, QUANTITY_ON_HAND) VALUES ('APPLE', 5);

INSERT INTO MYLIB.ORDER_ITEM_REQUIREMENTS (ITEM_NUMBER, QUANTITY, COST_PER) VALUES ('APPLE', 2, 1.23);
INSERT INTO MYLIB.ORDER_ITEM_REQUIREMENTS (ITEM_NUMBER, QUANTITY, COST_PER) VALUES ('APPLE', 2, 2.34);
INSERT INTO MYLIB.ORDER_ITEM_REQUIREMENTS (ITEM_NUMBER, QUANTITY, COST_PER) VALUES ('APPLE', 2, 5.55);

Gostaria do seguinte resultado:

{ITEM_NUMBER: "APPLE", NUM_SHIPMENTS: 2, QTY_SUM: 4, COST_SUM: 7.14}
db2
  • 1 respostas
  • 25 Views
Martin Hope
Sarov
Asked: 2022-11-23 08:58:58 +0800 CST

DROP ALIAS incapaz de descartar o alias existente?

  • 6

Não é possível descartar aliases. Então, encontrei um alias executando:

SELECT
    TABLE_NAME
FROM
    QSYS2.SYSTABLES
WHERE
    BASE_TABLE_NAME IN ('OE0711P','OE0712P')
    AND TABLE_TYPE = 'A'
    AND SYSTEM_TABLE_SCHEMA = 'AMPLIBX';

e escolheu o primeiro, que era OE0712PD506202270.

Então tentei rodar DROP ALIAS AMPLIBX.OE0712PD506202270;e dá o seguinte erro:

Estado SQL: 42704

Código do fornecedor: -204

Mensagem: [SQL0204] OE07100001 no tipo AMPLIBX *FILE não encontrado. Causa . . . . . : OE07100001 no tipo AMPLIBX *ARQUIVO não encontrado. Se o nome do membro for *ALL, a tabela não será particionada. Se esta for uma instrução ALTER TABLE e o tipo for *N, uma restrição ou partição não foi localizada. Se esta não for uma instrução ALTER TABLE e o tipo for *N, uma função, procedimento, gatilho ou objeto de sequência não foi encontrado. Se uma função não foi encontrada, OE07100001 é o programa de serviço que contém a função. A função não será encontrada a menos que o nome externo e o nome de uso correspondam exatamente. Examine o log da tarefa para obter uma mensagem que forneça mais detalhes sobre qual nome de função está sendo procurado e o nome que não corresponde. Recuperação . . . : Altere o nome e tente a solicitação novamente. Se o objeto for um grupo de nós, assegure-se de que o produto DB2 Multisystem esteja instalado em seu sistema e crie um grupo de nós com o comando CRTNODGRP CL. Se uma função externa não foi localizada, certifique-se de que as maiúsculas e minúsculas de EXTERNAL NAME na instrução CREATE FUNCTION correspondam exatamente às maiúsculas e minúsculas do nome exportado pelo programa de serviço.

O registro do trabalho diz apenas:

OE07100001 no tipo AMPLIBX *ARQUIVO não encontrado.

...mas como pode não ser encontrado? Eu literalmente acabei de encontrar nos metadados.

Observe também: Comportamento estranho ao tentar excluir por meio do aplicativo IBM i Access Client Solutions também.

  • O resumo mostra os 1097 aliases existentes. Mas quando clico com o botão direito do mouse no primeiro e seleciono Definição, ele tem um nome diferente daquele que selecionei. Ambos são aliases existentes (mas separados) de acordo com o QSYS2.SYSTABLES.
  • Quando tento clicar com o botão direito do mouse e excluir do resumo, nada acontece. Nenhuma mensagem de erro, não excluído.

Estou fazendo algo errado? Como posso descartar esses aliases?

db2
  • 2 respostas
  • 30 Views
Martin Hope
Sarov
Asked: 2022-02-19 08:56:36 +0800 CST

Como executar a instrução de mesclagem com base na lógica da tabela unida?

  • 0

Quando tento executar uma consulta como a seguinte:

MERGE INTO
    MYTABLE_A
AS MERGE_TARGET
USING
(
    SELECT
        MYTABLE_A.A, MYTABLE_B.B, MYTABLE_A.C, MYTABLE_D, MYTABLE_E
    FROM
        MYTABLE_A
        INNER JOIN MYTABLE_B
            ON MYTABLE_B.A = MYTABLE_A.A
    WHERE
        MYTABLE_A.LOGIC = 1
        AND MYTABLE_B.LOGIC = 2
) AS MERGE_USING
    ON MERGE_USING.C = MERGE_TARGET.C
    AND MERGE_TARGET.OTHERLOGIC = 1
    AND MERGE_TARGET.A IN (
        SELECT
            MYTABLE_A.A
        FROM
            MYTABLE_A
            INNER JOIN MYTABLE_B
                ON MYTABLE_B.A = MYTABLE_A.A
        WHERE
            MERGE_USING.B = MYTABLE_B.B
    )
WHEN MATCHED THEN UPDATE SET
        MERGE_TARGET.D = MERGE_USING.D,
        MERGE_TARGET.E = MERGE_USING.E

Dá-me este erro:

Mensagem: [SQL0115] O operador de comparação IN não é válido. Causa . . . . . : Operadores de comparação simples diferentes de igual e diferente não podem ser usados ​​com uma lista de itens. Os operadores de comparação ANY, ALL e SOME devem ser seguidos por uma seleção completa, em vez de uma expressão ou uma lista de itens. As subconsultas não podem ser especificadas em uma condição JOIN ou em uma expressão CASE. Recuperação . . . : Altere a comparação ou o operando. Tente a solicitação novamente.

Versão do DB2: V7R1

query errors
  • 1 respostas
  • 30 Views
Martin Hope
Sarov
Asked: 2020-12-01 07:12:31 +0800 CST

Qual é a diferença entre REGEXP_SUBSTR e REGEXP_EXTRACT?

  • 0

Qual é a diferença entre REGEXP_SUBSTR e REGEXP_EXTRACT?

Tanto quanto eu posso dizer, eles parecem fazer a mesma coisa. Existe alguma diferença nos efeitos colaterais, ou como eles se comportam para determinadas entradas? Como saber qual escolher?

db2 regex
  • 1 respostas
  • 160 Views
Martin Hope
Sarov
Asked: 2020-11-17 13:03:39 +0800 CST

Como adicionar coluna gerada à tabela db2?

  • 0

Tenho uma tabela com o seguinte:

Columns:
---
URL [nullable, e.g. "https://dba.stackexchange.com/"]
APPFK [nullable, e.g. 654654]
LINKTYPE ["Page", "Link", or "App"]

Check Constraints:
---
(URL IS NULL AND LINKTYPE <> "Link") OR (URL IS NOT NULL AND LINKTYPE = "Link")
(APPFK IS NULL AND LINKTYPE <> "App") OR (APPFK IS NOT NULL AND LINKTYPE = "App")

Como o LinkType é calculável com base na nulidade de URL e APPFK, imaginei que essa era uma oportunidade perfeita para uma coluna computada/gerada/virtual.

Então, tentei executar:

alter table MYLIB.MYTABLE
add column testcol VARCHAR(4) generated always as
(
    CASE
        WHEN URL IS NOT NULL THEN 'LINK'
        WHEN APPFK IS NOT NULL THEN 'APP'
        ELSE 'PAGE'
    END
)

Annnd DB2 cuspiu isso de volta para mim:

Estado SQL: 42601 Código do fornecedor: -104 Mensagem: [SQL0104] Token (não era válido. Tokens válidos: IDENTITY. Causa . . . . . . . . . . . : Um erro de sintaxe foi detectado no token (. Token ( não é um token válido. A lista parcial de tokens válidos é IDENTITY. Esta lista pressupõe que a instrução está correta até o token. O erro pode ser anterior na instrução, mas a sintaxe da instrução parece ser válida até este ponto. Recuperação . . . : Execute um ou mais dos seguintes procedimentos e tente a solicitação novamente: -- Verifique a instrução SQL na área do token (. Corrija a instrução. O erro pode ser uma vírgula ou aspas ausentes, uma palavra incorreta ou pode estar relacionado à ordem das cláusulas -- Se o token de erro for , corrija a instrução SQL porque ela não termina com uma cláusula válida.

Tentei executar o primeiro exemplo nesta documentação do DB2 , mas deu o mesmo erro.

O que está acontecendo de errado, aqui? Estou fazendo algo errado? A documentação está errada? É apenas porque nosso DB2 está desatualizado (estamos executando a Versão 7, Revisão 1) e, em caso afirmativo, existe uma solução alternativa?

db2 errors
  • 2 respostas
  • 358 Views
Martin Hope
Sarov
Asked: 2020-04-04 07:51:09 +0800 CST

Converter dois inteiros em timestamp

  • 0

Como faço para converter dois inteiros, um para data e outro para hora, em um carimbo de data/hora?

  • Dados 20200304 e 1046, retorne um carimbo de data/hora para 3 de abril de 2020, 10h46.
  • Dados 20200304 e 946, retorne um carimbo de data/hora para 3 de abril de 2020, 9h46.
  • Dados 20200304 e 2359, retorne um carimbo de data/hora para 3 de abril de 2020, 23h59.
  • Dado 20200304 e 0, retorne um carimbo de data/hora para 3 de abril de 2020, 0h.

Estou executando a versão 7, revisão 1.

db2 timestamp
  • 3 respostas
  • 85 Views
Martin Hope
Sarov
Asked: 2020-02-20 10:28:36 +0800 CST

Existe uma maneira de obter o conteúdo de um programa de RPG usando SQL?

  • 0

Então, eu tenho uma consulta para listar nossos programas de RPG:

SELECT OBJNAME
FROM
    (SELECT OBJNAME AS SCHEMA FROM TABLE (QSYS2.OBJECT_STATISTICS('*ALLSIMPLE', 'LIB')) S) AS SCHEMAS
    ,LATERAL (SELECT * FROM TABLE(QSYS2.OBJECT_STATISTICS(SCHEMAS.SCHEMA, 'PGM')) X) AS PROGRAMS
    LEFT JOIN QSYS2.PROCEDURES
        ON QSYS2.PROCEDURES.PROCNAME = PROGRAMS.OBJNAME
        AND QSYS2.PROCEDURES.PROCSCHEMA = PROGRAMS.OBJLONGSCHEMA
WHERE
    PROCNAME IS NULL
    AND SCHEMAS.SCHEMA = 'MYLIB'
;

Agora, existe alguma maneira, dado o nome de um programa de RPG, de obter o conteúdo dele via SQL?

(Ou, falhando o SQL, alguma outra maneira de obter o conteúdo de um aplicativo C#?)

db2 metadata
  • 1 respostas
  • 239 Views
Martin Hope
Sarov
Asked: 2019-11-20 09:16:37 +0800 CST

Não foi possível alterar a tabela - o código de razão é 10

  • 0

Estou tentando executar isso:

ALTER TABLE AMMLIBT.SAGRPPF ADD UNIQUE (ID) ADD CHECK ( IS_BUDGETABLE IN ( 0 , 1 )) ;

O que me dá isso:

Estado SQL: 55019

Código do fornecedor: -7008

Mensagem: [SQL7008] SAGRPPF em AMMLIBT não é válido para operação. Causa . . . . . : O código de motivo é 10. Os códigos de motivo são:

[...]

10 -- Uma restrição ou gatilho está sendo adicionado a um tipo de tabela inválido ou o número máximo de gatilhos foi atingido ou todos os nós da tabela distribuída não estão no mesmo nível de liberação.

[...]

Recuperação . . . : Siga um destes procedimentos com base no código de razão:

[...] 10 -- Especifique as tabelas que são válidas para restrições ou gatilhos.

[...]

...E eu não tenho idéia do porquê e não consigo encontrar nada online explicando isso.

A tabela está com diário e excluí todos os dependentes.

Estou no IBM DB2 V7R1

Como faço para corrigir isso?

db2 errors
  • 1 respostas
  • 442 Views
Martin Hope
Sarov
Asked: 2019-10-31 11:47:43 +0800 CST

Faz sentido colocar uma restrição exclusiva em um sinalizador de exclusão reversível anulável?

  • 5

Portanto, atualmente temos o seguinte:

MYTABLE
COLUMN: ID (INTEGER Primary key, auto-incrementer)
COLUMN: START (DATE)
COLUMN: COMPANYID (INTEGER, Foreign key to COMPANY)
COLUMN: DELETED (INTEGER)
CHECK: DELETED = 0 OR DELETED = 1

Agora, há o requisito de permitir infinitos registros excluídos, mas permitir apenas um único registro não excluído para cada data + empresa.

Eu sugeri mudar o esquema para:

MYTABLE
COLUMN: ID (INTEGER Primary key, auto-incrementer)
COLUMN: START (DATE)
COLUMN: COMPANYID (INTEGER, Foreign key to COMPANY)
COLUMN: ACTIVE (Nullable INTEGER)
CHECK: ACTIVE = 1 OR ACTIVE IS NULL
UNIQUE: START, COMPANYID, ACTIVE

Enquanto meu colega de trabalho é da opinião de que isso está "indo longe demais com restrições" e que devemos confiar apenas na verificação de exclusividade no aplicativo.

Existe uma prática recomendada geralmente aceita aqui?

database-design unique-constraint
  • 1 respostas
  • 304 Views
Martin Hope
Sarov
Asked: 2019-09-17 08:44:35 +0800 CST

Como registrar tabelas em SQL?

  • 1

Digamos que eu tenha um script C# que cria 50 tabelas no MYLIB.

Atualmente, depois de executar o script, tenho que entrar no System i Navigator e anexar manualmente o MYLIB/USRJRN ao journaling de cada uma das tabelas.

Como posso fazer meu script fazer isso?

db2 db2-midrange
  • 2 respostas
  • 1700 Views
Martin Hope
Sarov
Asked: 2019-09-13 09:29:02 +0800 CST

Alterações pendentes de um trabalho concluído

  • 0

Estou recebendo o seguinte erro:

Alterações não confirmadas pendentes para o arquivo MYTABLE na biblioteca MYLIB.

CPF325E

Causa . . . . . : Alterações não confirmadas estão pendentes para o arquivo MYTABLE na biblioteca MYLIB para definição de confirmação MYTABLE.

Recuperação . . . : Siga um destes procedimentos e tente sua solicitação novamente:

-- Conclua o processo de controle de confirmação fazendo uma confirmação ou retrocesso para a definição de confirmação MYTABLE.

-- Altere a opção de controle de confirmação e compile o programa novamente.

Descrição técnica . . . . . . . . : O identificador de definição de confirmação é X'5CC4C6E3C1C3E3C7D9D7'. A tarefa que iniciou a(s) alteração(ões) é 954538/QUSER/QZDASOINIT. A unidade lógica do identificador de trabalho é *N. O identificador do espaço de bloqueio é *N. The XID is X'5CD5404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040'.

O problema é que 954538/QUSER/QZDASOINIT não é um trabalho ativo. Ele não aparece em trabalhos ativos e executando isto:

 WRKCMTDFN 954538/QUSER/QZDASOINIT

Dá isso:

Trabalho 954538/QUSER/QZDASOINIT não encontrado.

...O que está acontecendo? Como um trabalho que foi concluído pode ser conectado a alterações pendentes? Como posso reverter essas alterações?

EDIT: Respondendo a perguntas em uma resposta:

Onde você está vendo a mensagem?

Essa específica é quando, no System iNavigator, clico com o botão direito do mouse em MYTABLE e seleciono Journaling. O erro original que me fez encontrar o problema é quando o C# lança:

iDB2SQLErrorException: SQL0910 Objeto MYTABLE no tipo MYLIB *FILE tem uma alteração pendente.

Da mesma forma, recebo um erro "alterações pendentes" ao tentar remover uma restrição referencial de MYTABLE.

Você tem autoridade *JOBCTL? Pode ser que o trabalho não tenha acabado, você simplesmente não tem autoridade para vê-lo.

Não sei, nem sei como verificar. Se eu executar:

WRKCMTDFN QUSER/QZDASOINIT

Em seguida, vários trabalhos aparecem, mas 954538 não é um deles.

db2 transaction
  • 2 respostas
  • 407 Views
Martin Hope
Sarov
Asked: 2019-09-11 06:49:20 +0800 CST

Criar View dando SQL7029

  • 0

Se relevante, estou usando o IBM i V7R1M0.

Eu tenho algum código em C#:

var generateSqlSql = $@"
CALL QSYS2.GENERATE_SQL(
    '{obj.Name}',
    '{obj.Library}',
    'VIEW',
    CREATE_OR_REPLACE_OPTION => '1',
    HEADER_OPTION => '0',
    COMMENT_OPTION => '1',
    PRIVILEGES_OPTION => '0',
    LABEL_OPTION => '0'
)";
...
//get results
//split on semicolon
//change library
//write back to database

O sql que está tentando escrever é:

CREATE OR REPLACE VIEW AMMLIBC.BBI_USER_MY_VIEW FOR SYSTEM NAME         BBIU_00001 ( 
/* view columns */ ) 
AS 
/*view definition */
RCDFMT BBIU_00001 

Quando tento executar, dá o seguinte erro:

iDB2SQLErrorException: SQL7029 New name BBIU_00001 is not valid.

...Por que? O que está causando isso e como faço para que funcione?

iseries errors
  • 1 respostas
  • 229 Views
Martin Hope
Sarov
Asked: 2017-07-07 13:25:39 +0800 CST

Como impor a integridade quando as tabelas unidas compartilham uma chave estrangeira? [duplicado]

  • 4
Essa pergunta já tem resposta aqui :
Proibição de inconsistência de dados se uma tabela se referir a outra por meio de dois relacionamentos muitos para muitos (1 resposta)
Fechado há 5 anos .

Considere a seguinte estrutura de tabela:

UserGroup(ie. 'Admin')
    ID = 'Admin'
    ApplicationFK = 'App1'

JoinTable
    UserGroupFK = 'Admin'
    PermissionFK = 'Approve'
    PermissionValue = 'READ'

Permission(ie. 'Approve')
    ID = 'Approve'
    ApplicationFK = 'App2'

UserPermission
    UserFK = 'John'
    PermissionFK = 'Approve'
    PermissionValue = 'WRITE'

User
    ID = 'John'

Onde você tem um conjunto entre UserGroup e Permission, com UserGroup e Permission tendo chaves estrangeiras para Application.

Existe alguma maneira de impor integridade, para evitar a situação acima, onde os ApplicationFKs não correspondem? Não posso simplesmente remover uma das chaves estrangeiras, pois é possível ter uma permissão sem nenhum grupo de usuários e possível ter um grupo de usuários sem permissões.

database-design
  • 2 respostas
  • 89 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve