Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Carloswaldo

#51
Por la naturaleza de TRUNCATE no es posible hacerlo sin un count o estadísticas.

CitarNo. TRUNCATE is a physical operation and does not deal with individual rows. If table stats are up to date you can check NUM_ROWS in USER_TABLES.

https://community.oracle.com/thread/2373304
#52
Bases de Datos / Re: Problema ORACLE procedimiento
26 Noviembre 2015, 20:04 PM
Es solo una idea, pero según el contenido de la tabla ficha ¿no estarías ejecutando varias veces CREATE TABLEs idéndicos?

No creo que solo haya un registro por año en la tabla ficha, si hay por ejemplo 2 registros que sean del 2009 estarías ejecutando CREATE TABLE FICHA_2009 dos veces, y la 2da fallará.

No estoy seguro en ORACLE pero deberías poder hacer un CREATE TABLE IF NOT EXISTS como un workaround para esto, pero la solución verdadera estaría en replantearse cómo haces lo que intentas hacer.
#53
Creo que lo primero que tienes que empezar haciendo es aprender un poco de lógica matemática. Acá se manejan valores de Verdadero y Falso, y los operadores lógicos como AND y OR toman 2 valores y realizan una operación sobre ellos. Tal como 2 + 2 = 4, puedes tener operaciones T and T = T. Lo bueno es que los valores binarios solo son 2 y puedes tener una tabla de los resultados porque son solo unos cuantos.

AND se cumple solo cuando ambos valores son verdaderos:

T and T = T
T and F = F
F and T = F
F and F = F

OR se cumple cuando al menos uno de los valores es verdadero:

T or T = T
T or F = T
F or T = T
F or F = F

en tus ejemplos tienes un AND al principio pero no sabemos qué es lo que hay antes de ese AND, ni si es verdadero o falso.

Otra cosa que tienes que tener en cuenta al usar varios operadores lógicos es que para mejor lectura debes agruparlos con paréntesis. Claro que si no usas paréntesis los operadores tienen un orden de resolución, pero es mejor que sea legible.

Links:

http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/introduccion/operadores1.htm
http://www.bennadel.com/blog/126-sql-and-or-order-of-operations.htm
#54
Hola,

Esto muy probablemente ocurre por el modo en que se comporta el caché para secuencias de Oracle. Por defecto Oracle pone en caché un número de valores de la secuencia para usarlos más rápido, pero si la base de datos se cae o se apaga, esos valores se pierden.

https://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_6014.htm

Para que esto no ocurra podrías poner la opción NOCACHE al crear la secuencia. Aunque lo más óptimo sería que la base de datos no tenga que apagarse a cada rato.

CitarOn thing that should be mentioned is that there is no guarantee that a sequence will not be lost. If the sequence is cached, or if a transaction that used a sequence is rolled back, then loss of that sequence number is possible in the event of a database shutdown or crash. Sequences should not be used with the expectation of:

1. Preservation of each number in the sequence.
2. Monitonical purity of the sequence being generated.

http://dbaforums.org/oracle/index.php?s=14afceab24ace3a29a6b0a2a44b55730&showtopic=917&view=findpost&p=2891
#55
Cita de: patilanz en  5 Octubre 2015, 07:49 AM
Si hay tres campos y ninguno de ellos es el ID único funciona bien porque si hago EXPECT de 2 campos y en la tabla hay tres, el tercero es diferente funciona por lo tanto aunque sea
(1,'Jose',21) (2,'Jose',21) haciendo SELECT * FROM test WHERE name='Jose' AND number=21 debería de funcionar porque en el SELECT no digo que no puede otros campos y si lo ejecuto solo me salen las dos filas pero si lo junto con EXCEPT e INSERT ya nada, como si no se seleccionara nada.

El EXCEPT no trabaja sobre las columnas sino sobre un conjunto de registros. Imagínate que es así:

Código (sql) [Seleccionar]
INSERT INTO test VALUES(NULL,'Jose',21) EXCEPT (SELECT * FROM test WHERE name='Jose');

entonces el SELECT se ejecuta primero y te traerá los registros enteros (con todas sus columnas, incluído el id) cuyo name = 'Jose', luego el INSERT ingresará a la tabla el registro a menos que coincida exactamente con alguno de los registros que trajo el SELECT.

Citar
El nombre no es único, es único el nombre mas el numero a la vez, es decir pueden existir campos así: (1,'Jose',21) (2,'Jose',23) pero no (1,'Jose',21) (2,'Jose',21)

¿Qué tal un índice UNIQUE sobre las 2 columnas (name y number)?
#56
Hola,

Yo no soy experto en SQLite pero creo que puedo deducir lo que está ocurriendo.

Fíjate en la primera tabla, al hacer el primer INSERT, el campo ID (primary key) tomará un valor, digamos '1', así que tendrías el registro (1,'Jose',21). Al tratar de hacer el segundo INSERT, el ID ahora será de '2', dando como resultado el registro (2,'Jose',21). Al hacer la validación, el registro (2,'Jose',21) no es lo mismo que el registro (1,'Jose',21), por lo que la excepción no aplica y se inserta el registro.

En la segunda tabla no hay campo ID, el primer INSERT será el registro ('Jose',21). En el segundo INSERT el registro que se intentará insertar será ('Jose',21), como es idéntico al anterior, la excepción aplica y no se inserta.

Por cierto, ¿por qué quieres hacer esto?, ¿por qué no haces que el campo 'name' sea UNIQUE?
#57
Bases de Datos / Re: Intalador para mysql
19 Septiembre 2015, 19:57 PM
¿En qué hiciste el instalador?

Yo recuerdo haber hecho esto con Nullsoft Installer, pero igual el concepto te servirá para otros instaladores:

Código (bash) [Seleccionar]
ExecWait '"msiexec" /i "C:\Ruta\mysql-5.5.19-win32.msi" /qn'

Eso ejecuta el instalador en modo silencioso y sin UI (/qn) Luego puedes usar MySQLInstanceConfig para configurar MySQL:

Código (bash) [Seleccionar]
ExecWait '"C:\Archivos de programa\MySQL\MySQL Server 5.5\bin\MySQLInstanceConfig.exe" -i -q ServiceName=MySQL RootPassword= ServerType=DEVELOPMENT DatabaseType=MYISAM Port=3306 RootCurrentPassword=mysql'

Más info en:

https://technet.microsoft.com/es-ec/library/cc759262(v=ws.10).aspx?f=255&mspperror=-2147217396

https://dev.mysql.com/doc/refman/5.5/en/mysql-config-wizard-cmdline.html
#58
Bases de Datos / Re: duda con llaves foraneas
31 Agosto 2015, 21:35 PM
¿Eh?

¿Estás seguro de que los campos id_tienda e id_producto de tab_venta no deben referenciar a tab_tienda y tab_producto correspondientemente?
#59
Efectivamente, lo acabo de probar con un script en bash sencillo que solo tenía un loop, funciona bastante bien.
#60
Puedes usar cpulimit, creo que es lo más parecido a lo que quieres:

https://github.com/opsengine/cpulimit

Ahora que si sabes inglés te viene bien esta lectura:

http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups