tutorial powerapps espaƱol ejemplos crear con aplicaciones sql sql-server sql-server-2008 constraints primary-key

sql - powerapps - Agregar clave principal a la tabla existente



powerapps ejemplos (9)

Creo que algo como esto debería funcionar

-- drop current primary key constraint ALTER TABLE dbo.persion DROP CONSTRAINT PK_persionId; GO -- add new auto incremented field ALTER TABLE dbo.persion ADD pmid BIGINT IDENTITY; GO -- create new primary key constraint ALTER TABLE dbo.persion ADD CONSTRAINT PK_persionId PRIMARY KEY NONCLUSTERED (pmid, persionId); GO

Tengo una tabla existente llamada Persion . En esta tabla tengo 5 columnas:

  • persionId
  • Pname
  • PMid
  • Pdescription
  • Pamt

Cuando creé esta tabla, configuré PersionId y Pname como la clave principal .

Ahora quiero incluir una columna más en la clave principal - PMID. ¿Cómo puedo escribir una declaración ALTER para hacer esto? (Ya tengo 1000 registros en la tabla)


Intenta usar este código:

ALTER TABLE `table name` CHANGE COLUMN `column name` `column name` datatype NOT NULL, ADD PRIMARY KEY (`column name`) ;


La restricción PRIMARY KEY identifica de forma única cada registro en una tabla de base de datos. Las claves primarias deben contener valores UNIQUE y la columna no puede contener valores NULL.

-- DROP current primary key ALTER TABLE tblPersons DROP CONSTRAINT <constraint_name> Example: ALTER TABLE tblPersons DROP CONSTRAINT P_Id; -- ALTER TABLE tblpersion ALTER TABLE tblpersion add primary key (P_Id,LastName)


Nigromancia
Solo en caso de que alguien tenga un esquema tan bueno para trabajar como yo ...
Aquí es cómo hacerlo correctamente:

En este ejemplo, el nombre de la tabla es dbo.T_SYS_Language_Forms, y el nombre de la columna es LANG_UID

-- First, chech if the table exists... IF 0 < ( SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = ''BASE TABLE'' AND TABLE_SCHEMA = ''dbo'' AND TABLE_NAME = ''T_SYS_Language_Forms'' ) BEGIN -- Check for NULL values in the primary-key column IF 0 = (SELECT COUNT(*) FROM T_SYS_Language_Forms WHERE LANG_UID IS NULL) BEGIN ALTER TABLE T_SYS_Language_Forms ALTER COLUMN LANG_UID uniqueidentifier NOT NULL -- No, don''t drop, FK references might already exist... -- Drop PK if exists (it is very possible it does not have the name you think it has...) -- ALTER TABLE T_SYS_Language_Forms DROP CONSTRAINT pk_constraint_name --DECLARE @pkDropCommand nvarchar(1000) --SET @pkDropCommand = N''ALTER TABLE T_SYS_Language_Forms DROP CONSTRAINT '' + QUOTENAME((SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS --WHERE CONSTRAINT_TYPE = ''PRIMARY KEY'' --AND TABLE_SCHEMA = ''dbo'' --AND TABLE_NAME = ''T_SYS_Language_Forms'' ----AND CONSTRAINT_NAME = ''PK_T_SYS_Language_Forms'' --)) ---- PRINT @pkDropCommand --EXECUTE(@pkDropCommand) -- Instead do -- EXEC sp_rename ''dbo.T_SYS_Language_Forms.PK_T_SYS_Language_Forms1234565'', ''PK_T_SYS_Language_Forms''; -- Check if they keys are unique (it is very possible they might not be) IF 1 >= (SELECT TOP 1 COUNT(*) AS cnt FROM T_SYS_Language_Forms GROUP BY LANG_UID ORDER BY cnt DESC) BEGIN -- If no Primary key for this table IF 0 = ( SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = ''PRIMARY KEY'' AND TABLE_SCHEMA = ''dbo'' AND TABLE_NAME = ''T_SYS_Language_Forms'' -- AND CONSTRAINT_NAME = ''PK_T_SYS_Language_Forms'' ) ALTER TABLE T_SYS_Language_Forms ADD CONSTRAINT PK_T_SYS_Language_Forms PRIMARY KEY CLUSTERED (LANG_UID ASC) ; END -- End uniqueness check ELSE PRINT ''FSCK, this column has duplicate keys, and can thus not be changed to primary key...'' END -- End NULL check ELSE PRINT ''FSCK, need to figure out how to update NULL value(s)...'' END


Por favor, intente esto-

ALTER TABLE TABLE_NAME DROP INDEX `PRIMARY`, ADD PRIMARY KEY (COLUMN1, COLUMN2,..);


Si agrega restricción de clave principal

ALTER TABLE <TABLE NAME> ADD CONSTRAINT <CONSTRAINT NAME> PRIMARY KEY <COLUMNNAME>

por ejemplo:

ALTER TABLE DEPT ADD CONSTRAINT PK_DEPT PRIMARY KEY (DEPTNO)


eliminar la restricción y recrearla

alter table Persion drop CONSTRAINT <constraint_name> alter table Persion add primary key (persionId,Pname,PMID)

editar:

puedes encontrar el nombre de la restricción usando la consulta a continuación:

select OBJECT_NAME(OBJECT_ID) AS NameofConstraint FROM sys.objects where OBJECT_NAME(parent_object_id)=''Persion'' and type_desc LIKE ''%CONSTRAINT''


-- create new primary key constraint ALTER TABLE dbo.persion ADD CONSTRAINT PK_persionId PRIMARY KEY NONCLUSTERED (pmid, persionId);

es una mejor solución porque tienes control sobre el nombre de la clave primaria.

Es mejor que solo usar

ALTER TABLE Persion ADD PRIMARY KEY(persionId,Pname,PMID)

que genera nombres aleatorios y puede causar problemas al crear scripts o al comparar bases de datos


ALTER TABLE TABLE_NAME ADD PRIMARY KEY(`persionId`,`Pname`,`PMID`)