ENTENDER IDENTITY_INSERT DE SQL SERVER

Hola tyros!, aqui de nuevo.

Aqui les dejo una pequeña explicación de como funciona IDENTITY_INSERT de SQL Server

Es muy simple, SIRVE PARA ACTIVAR O DESACTIVAR la insercción automática de datos enteros-autonuméricos-auto incrementales.
Imaginate qte tienes una tabla con un campo "id", el cual se inserta automáticamente a su siguiente número. Pues consiste simplemente en desactivarlo para que lo insertes tu y no el sistema.

NOTA IMPORTANTE: No deberás tratar de insertar un "id" que ya exista o tendrás un error cuando se trate de un campo llave o tengas una restricción que impida duplicados.

Entonces, solo asegurate de que el registro no exista previamente en la tabla.

Aqui te dejo un ejemplo de código y el resultado en una imagen:

use mydatabase
go
if exists(select 1 from INFORMATION_SCHEMA.TABLES where TABLE_NAME='test_identity' and TABLE_SCHEMA='dbo')
begin
	drop table dbo.test_identity
end
go
create table dbo.test_identity
(
	id int not null identity,
	valor nvarchar(50),
	activo bit not null constraint df_test_identity_activo default(1),
	constraint pk_test_identity primary key(id)
)
go
insert into dbo.test_identity(valor) values('Primer registro, id automatico') 
insert into dbo.test_identity(valor) values('Segundo registro, id automatico')
go
--desactivar identity
SET IDENTITY_INSERT dbo.test_identity ON
insert into dbo.test_identity(id,valor) values(25,'Tercer registgro, id asignado por mi')
insert into dbo.test_identity(id,valor) values(27,'Cuarto registro, id asignado por mi')
--activar identity
SET IDENTITY_INSERT dbo.test_identity OFF
insert into dbo.test_identity(valor) values('Quinto registro, id automatico')
--desactivar identity
SET IDENTITY_INSERT dbo.test_identity ON
insert into dbo.test_identity(id,valor) values(11,'Sexto registro, id INTERMEDIO asignado por mi')
--activar identity
SET IDENTITY_INSERT dbo.test_identity OFF
insert into dbo.test_identity(valor) values('Septimo registro, id automatico')
go
select * from dbo.test_identity

La maravilla de esta funcionalidad es que se ajusta automáticamente el siguiente máximo autonumerico!

Es decir, que si el "id" mas alto que insertaste de manera directa es un 100, el siguiente auto asignado sería el 101.

Me encantó!

Saludos!

Convert .Key file to .PEM in PHP

Hi tyros, im answering a question from a follower. Here is the way to convert a ".key" file to ".pem", using "phpseclib" in php

spl_autoload_register(function ($class_name) {
    $url = str_replace("\\", "/", $class_name);
    include_once __DIR__ . "/" . $url . ".php";
});

use phpseclib\Crypt\RSA as RSA;
use phpseclib\Crypt\Common\Keys\PKCS1 as PKCS1;


    public function KeyPEM() {
        $rsa = new RSA();
        $rsa->setPassword($this->password_key); //"$this->password_key": your .key file password
        $rsa->load(file_get_contents($this->path_archivo_key)); //"$this->path_archivo_key": your path to .key file
        $private = openssl_pkey_get_private($rsa->getPrivateKey(), $this->password_key);
        $result = "";
        openssl_pkey_export($private, $result);
        return $result;
    }

Here you can get PHPSecLib: Get it here
Note: "phpseclib" needs "ParagonIE" library to works correctly, Get it here.
Thanks!